zoukankan      html  css  js  c++  java
  • neo4j图形数据库Java应用

    CREATE
    
    (陈冠希:明星     {名称: "陈冠希"}),
    
    (王菲:明星         {名称: "王菲"}),
    
    (李亚鹏:明星     {名称: "李亚鹏"}),
    
    (瞿颖:明星         {名称: "瞿颖"}),
    
    (张柏芝:明星     {名称: "张柏芝"}),
    
    (谢霆锋:明星     {名称: "谢霆锋"}),
    
    (周迅:明星         {名称: "周迅"}),
    
    (张亚东:明星     {名称: "张亚东"}),
    
    (窦唯:明星         {名称: "窦唯"}),
    
    (窦鹏:明星         {名称: "窦鹏"}),
    
    (李大齐:明星     {名称: "李大齐"}),
    
    (朴树:明星         {名称: "朴树"}),
    
    (窦颖:明星         {名称: "窦颖"}),
    
    (梁朝伟:明星     {名称: "梁朝伟"}),
    
    (刘嘉玲:明星     {名称: "刘嘉玲"}),
    
    (周迅)-[:旧爱]->(窦鹏),
    
    (周迅)-[:旧爱]->(李大齐),
    
    (周迅)-[:旧爱]->(朴树),
    
    (周迅)-[:旧爱]->(李亚鹏),
    
    (周迅)-[:绯闻]->(梁朝伟),
    
    (周迅)-[:绯闻]->(谢霆锋),
    
    (王菲)-[:离异]->(李亚鹏),
    
    (王菲)-[:旧爱]->(谢霆锋),
    
    (王菲)-[:离异]->(窦唯),
    
    (谢霆锋)-[:旧友]->(陈冠希),
    
    (谢霆锋)-[:离异]->(张柏芝),
    
    (张亚东)-[:制作人]->(朴树),
    
    (张亚东)-[:离异]->(窦颖),
    
    (张亚东)-[:制作人]->(王菲),
    
    (李亚鹏)-[:旧爱]->(瞿颖),
    
    (陈冠希)-[:旧爱]->(张柏芝),
    
    (瞿颖)-[:旧爱]->(张亚东),
    
    (窦唯)-[:堂兄弟]->(窦鹏),
    
    (窦唯)-[:兄妹]->(窦颖),
    
    (梁朝伟)-[:夫妻]->(刘嘉玲),
    
    (王菲)-[:好友]->(刘嘉玲)
    MATCH (n:明星) RETURN n

    效果:


    直接关系

    MATCH m=(:明星 {名称:"周迅"})-[*..1]-() RETURN m

    最短路径

    MATCH p = AllShortestPaths(
    
    (周迅:明星 {名称:"周迅"})-[*..6]-(王菲:明星 {名称:"王菲"})
    
    ) RETURN p

    效果:


    MATCH p=(()<-[:旧爱]-()-[:旧爱]->()) RETURN p LIMIT 50

    MATCH p=(()<-[:旧爱]-()<-[:旧爱]-()-[:旧爱]->()) RETURN p LIMIT 50

    MATCH p=(()<-[:旧爱]-()<-[:旧爱]-()) RETURN p LIMIT 50

    直接上代码.

    bolt连接:

    package com;
    
    import org.neo4j.driver.v1.AuthTokens;
    import org.neo4j.driver.v1.Driver;
    import org.neo4j.driver.v1.GraphDatabase;
    import org.neo4j.driver.v1.Session;
    import org.neo4j.driver.v1.StatementResult;
    import org.neo4j.driver.v1.Transaction;
    import org.neo4j.driver.v1.TransactionWork;
    
    import static org.neo4j.driver.v1.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 Exception {
    		driver.close();
    	}
    
    	public void printGreeting(final String message) {
    		try (Session session = driver.session()) {
    			String greeting = session
    					.writeTransaction(new TransactionWork<String>() {
    						@Override
    						public String execute(Transaction tx) {
    							StatementResult result = tx
    									.run("CREATE (a:Greeting) "
    											+ "SET a.message = $message "
    											+ "RETURN a.message + ', from node ' + id(a)",
    											parameters("message", message));
    							return result.single().get(0).asString();
    						}
    					});
    			System.out.println(greeting);
    		}
    	}
    
    	public static void main(String... args) throws Exception {
    		try (HelloWorldExample greeter = new HelloWorldExample(
    				"bolt://localhost:7687", "neo4j", "123456")) {
    			greeter.printGreeting("hello, world");
    		}
    	}
    }
    package com;
    
    import static org.neo4j.driver.v1.Values.parameters;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.neo4j.driver.v1.AuthTokens;
    import org.neo4j.driver.v1.Driver;
    import org.neo4j.driver.v1.GraphDatabase;
    import org.neo4j.driver.v1.Record;
    import org.neo4j.driver.v1.Session;
    import org.neo4j.driver.v1.StatementResult;
    import org.neo4j.driver.v1.Value;
    
    public class Neo4jBoltAPIDBOperation {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Driver driver = GraphDatabase.driver("bolt://127.0.0.1:7687",
    				AuthTokens.basic("neo4j", "123456"));
    		Session session = driver.session();
    
    		session.run("CREATE (a:Person {name: {name}, title: {title}})",
    				parameters("name", "gm", "title", "King"));
    
    		StatementResult result = session.run(
    				"MATCH (a:Person) WHERE a.name = {name} "
    						+ "RETURN a.name AS name, a.title AS title",
    				parameters("name", "gm"));
    
    		while (result.hasNext()) {
    			Record record = (Record) result.next();
    			System.out.println(record.get("title").asString() + " "
    					+ record.get("name").asString());
    		}
    
    		session.close();
    		driver.close();
    	}
    
    }

    直接操作数据库文件(确保服务已关闭):

    package com;
    
    import java.io.File;
    
    import org.neo4j.graphdb.GraphDatabaseService;
    import org.neo4j.graphdb.Node;
    import org.neo4j.graphdb.Relationship;
    import org.neo4j.graphdb.Transaction;
    import org.neo4j.graphdb.factory.GraphDatabaseFactory;
    
    public class Neo4jJavaAPIDBOperation {
    	public static void main(String[] args) {
    		GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
    		GraphDatabaseService db = dbFactory.newEmbeddedDatabase(new File("E:/neo4j-community-3.3.5/data/databases/graph.db"));
    		try (Transaction tx = db.beginTx()) {
    
    			Node javaNode = db.createNode(Tutorials.JAVA);
    			javaNode.setProperty("TutorialID", "JAVA001");
    			javaNode.setProperty("Title", "Learn Java");
    			javaNode.setProperty("NoOfChapters", "25");
    			javaNode.setProperty("Status", "Completed");
    
    			Node scalaNode = db.createNode(Tutorials.SCALA);
    			scalaNode.setProperty("TutorialID", "SCALA001");
    			scalaNode.setProperty("Title", "Learn Scala");
    			scalaNode.setProperty("NoOfChapters", "20");
    			scalaNode.setProperty("Status", "Completed");
    
    			Relationship relationship = javaNode.createRelationshipTo(
    					scalaNode, TutorialRelationships.JVM_LANGIAGES);
    			relationship.setProperty("Id", "1234");
    			relationship.setProperty("OOPS", "YES");
    			relationship.setProperty("FP", "YES");
    
    			tx.success();
    		}
    		System.out.println("Done successfully");
    	}
    }
    
    package com;
    
    import org.neo4j.graphdb.Label;
    public enum Tutorials implements Label {
    	JAVA,SCALA,SQL,NEO4J;
    }
    package com;
    
    import org.neo4j.graphdb.RelationshipType;
    
    public enum TutorialRelationships implements RelationshipType {
    	JVM_LANGIAGES, NON_JVM_LANGIAGES;
    }
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>com.test</groupId>
    	<artifactId>neo4j</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<dependencies>
    		<dependency>
    			<groupId>org.neo4j</groupId>
    			<artifactId>neo4j</artifactId>
    			<version>3.3.5</version>
    		</dependency>
    		<dependency>
    			<groupId>org.neo4j.driver</groupId>
    			<artifactId>neo4j-java-driver</artifactId>
    			<version>1.4.4</version>
    		</dependency>
    	</dependencies>
    	<build />
    </project>


    与Spring集成未完待续、、、





  • 相关阅读:
    Hdu3037 Saving Beans
    bzoj3994 [SDOI2015]约数个数和
    bzoj2154 Crash的数字表格
    bzoj3529 [Sdoi2014]数表
    bzoj2820 YY的GCD
    bzoj2301 [HAOI2011]Problem b
    bzoj2440 [中山市选2011]完全平方数
    Java基础知识强化之IO流笔记20:FileOutputStream写出数据实现换行和追加写入
    Java基础知识强化之IO流笔记19:FileOutputStream的三个write方法
    Java基础知识强化之IO流笔记18:FileOutputStream写入数据
  • 原文地址:https://www.cnblogs.com/gmhappy/p/9472432.html
Copyright © 2011-2022 走看看