知识图谱-知识提取-neo4j基本命令

        neo4j是高性能的NoSQL图数据库,是目前使用率最高的图数据库,它拥有活跃的社区,而且系统本身的查询效率高,但唯一的不足就是不支持准分布式,相反,OrientDB和JanusGraph支持分布式,通常来讲对于10亿节点一下规模的图谱来说Neo4j已经足够了。

        一、Neo4j的安装

        首先需要到点击打开链接下载neo4j,由于我的主机是ubutun故下载的是linux版本的neo4j

        终端命令跳到目录neo4j所在目录下的/neo4j-community-3.0.7/bin

        输入命令./neo4j console,运行neo4j

        网页浏览http://localhost:7474/, 就会看到neo4j的后台界面

        初次默认用户名和密码是 neo4j、neo4j 

        二、Neo4j的介绍

            neo4j有自己的查询语言——Cypher,Cypher是对于图形模式的表达,总是先用MATCH去匹配我们要操作的数据。

            Cypher由下列几个部分组成:

(1)nodes,通常用圆括号来包含节点标示符
例如:(p: Person)
如果想添加属性:(p: Person {name: "yinglish"})
(2)relationships,我们通常用——>表示关系,没有箭头的如——指不强方向关系
例如:(a)-[:KNOWS|:LIKE]->(b) a到b是“相识”的关系或者”喜欢“
(a)-[rel:KNOWS]->(b) 关系的变量名为rel,类型是 KNOWS
-[{since: 2016}]-> 添加了额外的属性

(3)patterns,模式由一个或多个路径组成,路径间用逗号分割,其是cypher中的关键部分,灵活书写模式能帮我们正                 确获取、实现推测计算等等各种任务

            三、Neo4j实现小demo

        (1)    创建自己的"me"节点

            CREATE (me:Myself {name:"我"}) RETURN me

      

      (2)创建与自己关系的节点

      MATCH (me:Myself {name:"我"}) CREATE (me)-[like:LIKE]->(neo:NeoDatabase {name:"Neo4j" }) RETURN me,like,neo

        

        (3)批量创建与自己有关的朋友

          MATCH (me:Myself {name:"我"}) FOREACH (name in ["张三","李四","王五","赵六","孙七"] | CREATE (me)-[:FRIEND]->(:Myself {name:name}))

         (4) 查看me节点与friend

        match (me {name:'我'})-[:FRIEND]->(mf) return me,mf

         

         (5)新建朋友圈之外的二度关系

        match (neo:NeoDatabase {name : 'Neo4j'})
        match (me {name:'我'})-[:FRIEND]->(mf)
        match (anna {name:'张三'})
        create (ama:Myself {name:'周八'})
        create (ama)-[:WORKED_WITH]->(neo)
        create (anna)-[:FRIEND]->(ama)

        return me,mf,neo,anna,ama

        

        (6) 查询:我通过朋友圈中的谁来学习neo4j

        match (me:Myself {name:"我"}) 
        match (expert)-[:WORKED_WITH]->(neo:NeoDatabase {name:'Neo4j'})

        match path = shortestPath((me)-[:FRIEND*..5]-(expert))

        return path,me,expert,neo

        

        注意,此过程单个步骤不可重复执行,否则最后输出的node及其多。

     四、列举几个neo4j删除命令:

        删除节点之前需先将关系删除

        # 删除节点之前先要删除关系

        match (me {name:'我'})-[r:FRIEND]-(mf) 
        detach delete r

        match (Amanda {name:'周八'})-[r:WORKED_WITH]->(neo {name:'NeoDatabase'}) 
        detach delete r

猜你喜欢

转载自blog.csdn.net/m0_37565948/article/details/81061484