[TOC]
neo4j下载和相关问题
由于目前学习到知识图谱方面,neo4j也是一个经常会用到的工具,所以今天来进行稍微的学习一下,也算是作为今天的记录吧,首先是软件的安装,我下载的是neo4j Desktop
需要注意的是,你的java版本需要很高,我是从这次升级到了17,卸载也是挺麻烦的,从网上找个教程卸载吧,
首先是从系统的卸载页面把两个和Java有关的卸载了,然后最重要的是环境变量的删除,系统变量环境变量这种
然后是删除系统文件夹中的JAVA,c盘中的Oracle和Sun文件夹,查看C:Program Files或C:Program Files (x86)下是否有相关的文件夹;最后检验cmd这种,我是没有删除注册表这种东西。
重要的是,如果你重复卸载之后可能会出现红色的感叹号!
这种你需要解决的就是去c盘的neo4j desktop 文件夹中删除掉之前建立的project就可以。
neo4j基础学习
CREATE (:个人 {性别: '男', 体检年龄:43 , 丙氨酸氨基转移酶: 正常, 天门冬氨酸氨基转移酶: 正常, γ-谷氨酰基转移酶: 正常, 总胆红素: 过高, 尿酸: 正常, 总胆固醇: 正常, 甘油三酯: 正常, 腰围: 正常, 体重指数: 正常, 是否有糖尿病: 否, 高密度脂蛋白胆固醇: 正常})
1.基本的增删改查
插入节点。插入一个Person类别的节点,且这个节点有一个属性name,属性值为Andres
CREATE (n:Person {name : 'suoshi'});
插入边。插入一条a到b的有向边,且边的类别为Follow
MATCH (a:Person),(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[r:Follow]->(b);
删除节点
MATCH (n:Person { name:'Taylor' })
DETACH DELETE n;
更新节点。更新一个Person类别的节点,设置新的name。
MATCH (n:Person { name: 'Andres' })
SET n.name = 'Taylor';
全部删除关系和节点
MATCH(r)
DETACH DELETE r
删除边
MATCH (a:Person)-[r:Follow]->(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
DELETE r;
查询
MATCH (tom {name: "Tom Hanks"}) RETURN tom
MATCH (people:Person) RETURN people.name LIMIT 10
MATCH (nineties:Movie) WHERE nineties.released >= 1990 AND nineties.released < 2000 RETURN nineties.title
查询最短路径
MATCH (ms:Person { name:'Node A' }),(cs:Person { name:'Node B' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;
查询两个节点之间的关系
MATCH (a:Person { name:'Node A' })-[r]->(b:Person { name:'Node B' })
RETURN type(r);
查询一个节点的所有Follower
MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person)
RETURN Person.name;
2.可以通过调用JAVA来进行使用
其实在网络上有着 springboot + neo4j的组合,我之后肯定会建一个这样的可视化系统来进行展示。
Neo4j Java Driver
When using Maven, add this to your pom.xml file:
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>???</version>
对于其他的构建系统来说
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Query;
import static org.neo4j.driver.Values.parameters;
public class HelloWorldExample implements AutoCloseable {
private final Driver driver;
public HelloWorldExample(String uri, String user, String password) {
driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password));
}
@Override
public void close() throws RuntimeException {
driver.close();
}
public void printGreeting(final String message) {
try (var session = driver.session()) {
var greeting = session.executeWrite(tx -> {
var query = new Query("CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)", parameters("message", message));
var result = tx.run(query);
return result.single().get(0).asString();
});
System.out.println(greeting);
}
}
public static void main(String... args) {
try (var greeter = new HelloWorldExample("bolt://localhost:7687", "neo4j", "password")) {
greeter.printGreeting("hello, world");
}
}
}
下次再构建吧 可以学习的页面