Neo4j笔记

    xiaoxiao2021-10-29  64

    在构建知识图谱的时候,Neo4j用来建立实体之间的关系非常方便,下面简单介绍一下它的使用方法: 开发者教程: http://neo4j.com/docs/developer-manual/3.0/Cypher clauses: 4.2. Patterns in Practice) 安装: https://neo4j.com/download/ 下载 For Individuals版本 https://neo4j.com/download-thanks/?edition=community&flavour=unix&release=3.0.3&_ga=1.125354882.980633886.1467375987 Open up your terminal/shell. Extract the contents of the archive, using: tar -xf  <filecode>. For example, tar -xf neo4j-community-3.0.3-unix.tar.gz the top level directory is referred to as NEO4J_HOME Run Neo4j using, $NEO4J_HOME/bin/neo4j console Instead of ‘neo4j console’, you can use neo4j start to start the server process in the background. $bin/neo4j Usage: neo4j { console | start | stop | restart | status } $bin/neo4j start Starting Neo4j. WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manual. Started neo4j (pid 24179). By default, it is available at http://localhost:7474/ There may be a short delay until the server is ready. $bin/neo4j status Neo4j is running at pid 24179 Visit http://localhost:7474 in your web browser. Change the password for the ‘neo4j’ account. conf目录下是neo4j的配置文件,其中可以修改一些设置,如: # Paths of directories in the installation. #dbms.directories.data=data #dbms.directories.plugins=plugins #dbms.directories.certificates=certificates dbms.security.auth_enabled=false #关闭认证 修改密码在http://localhost:7474中,输入如下命令: :server change-password You can use the command  :help server  to see available authentication commands. 注:如果出现修改完密码后登录不了,重装后使用默认密码同样报错,尝试重启 在打开的页面中会有相关的使用文档,选择 Cypher,在显示的列表中,双击Cypher代码即可填充到输入框中,点击运行即可得到运行结果: 注意:(1)在输入Cypher语句后,要看到效果,需要添加return语句。(2)回车会自动执行,shift+Enter可在代码中进行 显示的设置: 点击图上面的对象,在下方可以设置颜色和大小,还可以用来设置node显然哪个属性的值。 Cypher语法 Creating Data create CREATE (a:Person { name:"Tom Hanks",born:1956 }) //创建实体 (),类型Person,属性{},该实体赋值给变量a -[r:ACTED_IN { roles: ["Forrest"]}] //创建关系 -[],类型ACTED_IN,属性{}, ->(m:Movie { title:"Forrest Gump",released:1994 }) //关系对应实体 ->(),类型Movie,属性{},该实体会被创建,如果关联已有的需要MATCH操作。 CREATE (d:Person { name:"Robert Zemeckis", born:1951 })-[:DIRECTED]->(m) //后面的 RETURN a,d,r,m 创建出来的图如下: 创建一些测试数据: CREATE (matrix:Movie { title:"The Matrix",released:1997 })CREATE (cloudAtlas:Movie { title:"Cloud Atlas",released:2012 })CREATE (forrestGump:Movie { title:"Forrest Gump",released:1994 })CREATE (keanu:Person { name:"Keanu Reeves", born:1964 })CREATE (robert:Person { name:"Robert Zemeckis", born:1951 })CREATE (tom:Person { name:"Tom Hanks", born:1956 })CREATE (tom)-[:ACTED_IN { roles: ["Forrest"]}]->(forrestGump)CREATE (tom)-[:ACTED_IN { roles: ['Zachry']}]->(cloudAtlas)CREATE (robert)-[:DIRECTED]->(forrestGump) 边可以带有属性,如ACTED_IN关系带有roles属性,同样边的属性可以用来查找: match ()-[r:ACTED_IN]->() where r.pro1="hello world" return r Matching Patterns match MATCH (m:Movie) //匹配Movie类型实体,保存到变量m中。RETURN m MATCH (p:Person { name:"Keanu Reeves" }) //匹配Person类型实体,并且name是Keanu ReevesRETURN p MATCH (p:Person { name:"Tom Hanks" })-[r:ACTED_IN]->(m:Movie) //配置实体+关系RETURN m.title, r.roles Attaching Structures match+create MATCH (p:Person { name:"Tom Hanks" }) //匹配名称为Tom Hanks的Person,如果p没有匹配的结果,下面的create都不会执行。CREATE (m:Movie { title:"Cloud Atlas",released:2012 })CREATE (p)-[r:ACTED_IN { roles: ['Zachry']}]->(m)RETURN p,r,m Completing Patterns merge == match + create MERGE (m:Movie { title:"Cloud Atlas" }) //先匹配在创建,即如果存在就不创建,如果不存在就创建。 Merge()内的是条件,Merge是node层面上的merge,并非属性 ON CREATE SET m.released = 2012 // ON执行的具体操作。RETURN m MATCH (m:Movie { title:"Cloud Atlas" })MATCH (p:Person { name:"Tom Hanks" })MERGE (p)-[r:ACTED_IN]->(m) //创建关系,要检查两个实体是否已经存在。ON CREATE SET r.roles =['Zachry']RETURN p,r,m CREATE (y:Year { year:2014 })MERGE (y)<-[:IN_YEAR]-(m10:Month { month:10 }) //会创建关系以及实体MERGE (y)<-[:IN_YEAR]-(m11:Month { month:11 })RETURN y,m10,m11 Filtering Results match-where MATCH (m:Movie)WHERE m.title = "The Matrix" //属性条件的判断。RETURN m MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)WHERE p.name =~ "K.+" OR m.released > 2000 OR "Neo" IN r.rolesRETURN p,r,m MATCH (p:Person)-[:ACTED_IN]->(m)WHERE NOT (p)-[:DIRECTED]->()RETURN p,m Returning Results MATCH (p:Person)RETURN p, p.name AS name, upper(p.name), coalesce(p.nickname,"n/a") AS nickname, { name: p.name, label:head(labels(p))} AS person Aggregating Information MATCH (:Person)RETURN count(*) AS people MATCH (actor:Person)-[:ACTED_IN]->(movie:Movie)<-[:DIRECTED]-(director:Person)RETURN actor,director,count(*) AS collaborations 4.1. Patterns 该节的内容是如何进行node/relationship模式匹配 4.1.1. Node Syntax ()(matrix)(:Movie)(matrix:Movie)(matrix:Movie {title: "The Matrix"})(matrix:Movie {title: "The Matrix", released: 1997}) 4.1.2. Relationship Syntax -->-[role]->-[:ACTED_IN]->-[role:ACTED_IN]->-[role:ACTED_IN {roles: ["Neo"]}]-> 创建索引: CREATE INDEX ON :Country(name) 9.8. Importing CSV files with Cypher 9.3. Set The SET clause is used to update labels on nodes and properties on nodes and relationships. 可以对属性值进行 updateaddremove 9.3.1. Set a property 9.3.2. Remove a property 9.3.4. Adding properties from maps 9.3.8. Set a label on a node MATCH (n { name: 'Stefan' }) SET n :German RETURN n 13.5.4. Merge Into When both the start and end node have already been found, merge-into is used to find all connecting relationships or creating a new relationship between the two nodes. CYPHER planner=ruleMATCH (p:Person { name: "me" }),(f:Person { name: "Andres" })MERGE (p)-[:FRIENDS_WITH]->(f) 可以直接在文档 http://neo4j.com/docs/developer-manual/3.0/#cypher-query-lang 中搜索其他功能,如 delete,功能如下: The DELETE clause is used to delete graph elements — nodes, relationships or paths. The REMOVE clause is used to remove properties and labels from graph elements. MATCH (n:Useless)DELETE n Delete all nodes and relationships: MATCH (n)DETACH DELETE n 上面的方式会将node和relations都删除,但这种删除方式仍会有一些信息未清空(如 Property keys),彻底删除数据库使用如下方式: >bin/neo4j stop >rm -rf data/databases/graph.db >bin/neo4j start python接口: 在文档中搜索 python,文档中15节可以看到各个语言调用的说明: http://neo4j.com/docs/developer-manual/3.0/#cypher-query-lang python代码 添加neo4j节点和关系可以使用已有的 py2neo ,也可以自己写方法进行插入,需要python代码的可以联系我。
    转载请注明原文地址: https://ju.6miu.com/read-677852.html

    最新回复(0)