Neo4j简单的样例

系统环境:

Ubuntu 04.10 x64

一:安装

下载最新版:neo4j-community-2.2.3-unix.tar.gz  解压

cd neo4j-community-2.2.3/bin

./neo4j start

启动之后。默认的webport是:7474

三:JAVA操作neo4j

以下样例演示了一个银行层级关系的样例

央行以下有四大行,四大行以下有各自的分行。各自的分行又有各自的支行

package com.lala.neo4j;

import org.neo4j.graphdb.Label;

public class BankLabel implements Label
{
	private String name;

	public BankLabel(String name)
	{
		this.name = name;
	}
	public String name()
	{
		return name;
	}
}
package com.lala.neo4j;

import org.neo4j.graphdb.RelationshipType;

public class BankRelationshipType implements RelationshipType
{
	private String ship;

	public BankRelationshipType(String ship)
	{
		this.ship = ship;
	}
	public String name()
	{
		return ship;
	}
}
package com.lala.neo4j;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;

public class Neo4j
{
	/**
	 * 标签
	 */
	static BankLabel top = new BankLabel("总行");
	static BankLabel sdh = new BankLabel("四大银行");
	static BankLabel fh = new BankLabel("分行");
	static BankLabel zh = new BankLabel("支行");

	/**
	 * 关系
	 */
	static BankRelationshipType xj = new BankRelationshipType("XJ");
	static BankRelationshipType sj = new BankRelationshipType("SJ");

	/**
	 * 初始化总行和分行的关系数据
	 */
	static void init1(GraphDatabaseService db)throws Exception
	{
		Node n1 = db.createNode(top);
		n1.setProperty("name", "央行");

		Node n2 = db.createNode(sdh);
		n2.setProperty("name", "农业银行");

		Node n3 = db.createNode(sdh);
		n3.setProperty("name", "工商银行");

		n1.createRelationshipTo(n2, sj);
		n2.createRelationshipTo(n1, xj);

		n1.createRelationshipTo(n3, sj);
		n3.createRelationshipTo(n1, xj);
	}

	/**
	 * 初始化农业银行分行数据
	 */
	static void init2(GraphDatabaseService db)throws Exception
	{
		Node n1 = db.getNodeById(1);

		Node gd = db.createNode(fh);
		gd.setProperty("name", "农业银行广东分行");
		n1.createRelationshipTo(gd, sj);
		gd.createRelationshipTo(n1, xj);

		Node hn = db.createNode(fh);
		hn.setProperty("name", "农业银行湖南分行");
		n1.createRelationshipTo(hn, sj);
		hn.createRelationshipTo(n1, xj);

		Node hb = db.createNode(fh);
		hb.setProperty("name", "农业银行湖北分行");
		n1.createRelationshipTo(hb, sj);
		hb.createRelationshipTo(n1, xj);

		Node zj = db.createNode(fh);
		zj.setProperty("name", "农业银行浙江分行");
		n1.createRelationshipTo(zj, sj);
		zj.createRelationshipTo(n1, xj);
	}

	/**
	 * 初始化工商银行分行数据
	 */
	static void init3(GraphDatabaseService db)throws Exception
	{
		Node n1 = db.getNodeById(2);

		Node gd = db.createNode(fh);
		gd.setProperty("name", "工商银行广东分行");
		n1.createRelationshipTo(gd, sj);
		gd.createRelationshipTo(n1, xj);

		Node hn = db.createNode(fh);
		hn.setProperty("name", "工商银行湖南分行");
		n1.createRelationshipTo(hn, sj);
		hn.createRelationshipTo(n1, xj);

		Node hb = db.createNode(fh);
		hb.setProperty("name", "工商银行湖北分行");
		n1.createRelationshipTo(hb, sj);
		hb.createRelationshipTo(n1, xj);
	}

	/**
	 * 初始化农业银行广东分行以下的支行数据
	 */
	static void init4(GraphDatabaseService db)throws Exception
	{
		Node n1 = db.getNodeById(3);

		Node th = db.createNode(zh);
		th.setProperty("name", "农业银行天河支行营业部");
		n1.createRelationshipTo(th, sj);
		th.createRelationshipTo(n1, xj);

		Node yt = db.createNode(zh);
		yt.setProperty("name", "农业银行燕塘支行");
		n1.createRelationshipTo(yt, sj);
		yt.createRelationshipTo(n1, xj);

		Node thb = db.createNode(zh);
		thb.setProperty("name", "农业银行天河北路支行");
		n1.createRelationshipTo(thb, sj);
		thb.createRelationshipTo(n1, xj);

		Node sp = db.createNode(zh);
		sp.setProperty("name", "农业银行石牌东路支行");
		n1.createRelationshipTo(sp, sj);
		sp.createRelationshipTo(n1, xj);

		Node hy = db.createNode(zh);
		hy.setProperty("name", "农业银行华苑支行");
		n1.createRelationshipTo(hy, sj);
		hy.createRelationshipTo(n1, xj);
	}

	/**
	 * start a=node(13) MATCH (a)<-[:SJ*1..3]-(b) return a,b (往上找三级,一共四级)
	 * start a=node(1) MATCH (a)-[:SJ*1..3]->(b) return a,b (往下找三级,一共四级)
	 */
	public static void main(String[] args) throws Exception
	{
		GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase("/home/admin/db/neo4j");

		Transaction tx = db.beginTx();
		init1(db);
		init2(db);
		init3(db);
		init4(db);
		tx.success();
		tx.close();
	}
}

这里数据的路径是:/home/admin/db/neo4j

cd neo4j-community-2.2.3/conf

vim neo4j-server.properties 文件。把数据库文件夹改为上面的路径,然后,重新启动neo4j

訪问

http://127.0.0.1:7474

输入默认的username/password neo4j/neo4j

然后。改动默认password

就可以查询

以下给几个查询语句

查询全部:match a return a

查询全部标签为‘分行‘的数据 match (a:分行) return a

start a=node(1) MATCH (a)-[:SJ*1..3]->(b) return a,b (从node id=1開始,往下找三级,一共四级)

start a=node(13) MATCH (a)<-[:SJ*1..3]-(b) return a,b (从node id=13開始。往上找三级。一共四级)

总结:neo4j非常适合保存有层级关系的数据,比方说:无限极分类

时间: 2024-11-10 13:58:30

Neo4j简单的样例的相关文章

一则简单演示样例看Oracle的“无私”健壮性

Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlzYWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 收集统计信息: 创建B树索引: 2. 运行select id from tbl_plan;查看它的运行计划: 由于创建了

Android中关于JNI 的学习(零)简单的样例,简单地入门

Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,Java去调用C/C++的代码事实上就是去调用C/C++提供的方法.所以,第一步,我们要创建一个类,而且定义一个Native方法.例如以下: JniTest类: public class JniTest { public native String getTestString(); } 能够看到,在这

[hadoop系列]Pig的安装和简单演示样例

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yahoo!捐献给Apache的一个项目,眼下还在Apache孵化器(incubator)阶段,眼下版本号是v0.5.0.Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运

Java 多线程编程两个简单的样例

/** * @author gao */ package gao.org; public class RunnableDemo implements Runnable{ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++){ System.out.println("新线程输出:"+i); } } public static void main(String []

JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MSC 替换了之前的 JMX Kernel 和 MicroContainer,它主要特定能够总结例如以下三点: 高并发容器(A highly concurrent state machine) 无多相位,设计简单(No multiple phases, much simpler) 不依赖 JMX 和 J

Android中关于JNI 的学习(四)简单的样例,温故而知新

在第零篇文章简单地介绍了JNI编程的模式之后.后面两三篇文章,我们又针对JNI中的一些概念做了一些简单的介绍,也不知道我究竟说的清楚没有.但相信非常多童鞋跟我一样.在刚開始学习一个东西的时候,入门最好的方式就是一个现成的样例来參考,慢慢研究,再学习概念.再回过来研究代码,加深印象,从而開始慢慢掌握. 今天我们就再来做一个小Demo.这个样例会比前面略微复杂一点.可是假设阅读过前面几篇文章的话,理解起来也还是非常easy的. 非常多东西就是这样.未知的时候非常可怕.理解了就非常easy了. 1)我

socket编程——一个简单的样例

从一个简单的使用TCP样例開始socket编程,其基本过程例如以下: server                                                  client +++++++                                          ++++++++ 创建socket                                          创建socket +++++++                            

SWFUpload简单使用样例 Java版(JSP)

SWFUpload官方的样例都是PHP的,在这里提供一个Java版的最简单的使用样例,使用JSP页面完毕全部操作. 实现上传,分为三步: 1.JavaScript设置SWFUpload部分(与官方样例类似): Js代码   var upload; window.onload = function() { upload = new SWFUpload({ // 处理文件上传的url upload_url: "${pageContext.request.contextPath}/swfupload/

Activiti的简单入门样例(经典的请假样例)

经典的请假样例: 流程例如以下,首先须要部门经理审批.假设请假天数大于2天,则须要总经理审批,否则HR审批就可以 一:创建maven项目,项目结构例如以下: 增加依赖 pom.xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.17.0</version> </depe