Neo4j基础(详细)

web界面基本操作

  • create创建节点
    create(node-name : label-name { property-name : property-value })
    e.g. 创建单标签的节点,该节点拥有4个属性


    image.png

    e.g.创建多个标签的节点,该节点有一个属性


    image.png

    我们继续加入一些节点,方便下面的操作
    image.png

    e.g.在创建节点的时候同时设置关联
    image.png

    e.g.为现有节点创建关联(Neo4j CQL CREATE命令仅支持方向关系)


    image.png

    e.g.返回某个节点后,可以根据节点的关联选项查看与他关联的节点、关系信息
    image.png

    e.g.在创建节点的时候可以只设计好需要的属性,不填入具体值而是置为NULL,后期使用IS NULL来找到这个节点并设置需要的值
    image.png

    image.png
  • match查找关系、或是查找节点
  • return得到操作的信息展示
    e.g.显示所有节点


    image.png

    e.g.查找特定的某个节点的具体信息


    image.png

    e.g.查找一类节点的信息
    image.png

    e.g.根据点标签查找一类节点
    image.png

    e.g.根据点属性查找节点


    image.png

    e.g.Match联合with对中间结果进行处理
    image.png

    e.g.对于多个标签的节点,可以指定标签进行查找
    image.png
  • 删除delete-删除节点或是关联
    e.g.比如我们建了一些同学关系,然后发现过于杂乱打算删掉刚刚添加的关系


    image.png

    image.png

    e.g.发现Sylvia和Nile的节点间Friends关系设置的有问题,删除关系重新加


    image.png

    e.g.删除重复的节点
    image.png

    适当补充一些其他关系
    image.png
  • 添加或删除属性(set、remove)
    e.g.添加一个tagline


    image.png

    e.g.添加一个属性


    image.png

    e.g.删除一个属性
    image.png

    Detach delete与delete:前者删除节点和关系,后者只是删除节点

    e.g.删除tagline


    image.png
  • tagline


    image.png

    Tagline:节点的一些特征,可以没有
    Property:属性,可以是节点的也可以是关联的属性
    Label:标签,用于节点分类

  • where根据限定的条件筛选
  • 排序 order by
    e.g.按名字降序排列


    image.png
  • Union
    e.g.可以看到Union需要前后的两个查询具有相同的列名


    image.png

    e.g.统计老师学生的id


    image.png
  • Limit
    e.g.限制显示两个节点(按照<id>从小到大的顺序展示)


    image.png

    image.png

    image.png

    这里的<id>是自动编号的,我们也可以通过查找它来对节点进行查询或操作
    e.g.对<id>=1的节点进行查询


    image.png
  • Skip跳过几个节点
    e.g.skip 3 跳过前三个节点


    image.png
  • Merge操作
    e.g. Merge对于不存在的节点,作用类似于create


    image.png

    e.g.对于已经存在的几点,作用只是查找他,并不会新增节点


    image.png
  • In操作
    e.g.给定一个符合选取条件的区间


    image.png
  • 图字体和显示设置


    image.png

    可以选择颜色大小,caption部分可以选择展示的标题

  • 字符串函数


    image.png
  • 聚合函数(类似SQL,在return子句中声明)
    e.g.节点自编id的最大最小值


    image.png

    e.g.爱好弹钢琴的人数(对特定的属性进行统计)


    image.png

    e.g.label为学生的人数(对特定的label进行统计)
    image.png
  • 关系函数
    我们先建立一个小的模块,方便后续操作


    image.png

    e.g.找到关系的始端


    image.png

    e.g.同理也可以找到末端
    image.png

    e.g.当关系具有特定属性,我们可以通过限制属性查找特定关系的始末端
    image.png

    e.g.同时可以查询关系的id、类型和一些属性


    image.png

    可以用schema查看一下当前的索引和约束情况
    image.png
  • 索引
    e.g.创建索引


    image.png

    e.g.查看索引


    image.png

    e.g.删除索引
    image.png

    索引的作用:优化查询的过程
  • unique约束
    e.g.创建一个唯一约束,试图插入一个违规数据,检测到报错


    image.png

    image.png

针对Neo4j的第三方软件

  • Apoc:Awesome Procedures on Cypher(封装了一些cypher编写复杂的函数)
  • 开源可视化组件库:(可以根据自己的项目特点进行调整)
    D3.js:一个基于数据处理文档JavaScript库,可以通过操作HTML、SVG、CSS来实现数据可视化。我们可以在网页端引入Neo4j的JavaScript js库,调用Neo4j的API拿到数据,然后根据D3.js的API组织JSON数据,然后渲染。
    vis.js、Sigma.js、Vivagraph.js、yWorks
  • 更加容易使用的可视化方案:(整套、全封装、高可用)
    Gephi、Keylines、Linkurio.us、Tom Sawyer图可视化
    (Neo4j Browser)
  • Neoclipse:帮助更好地调整、创建、展示Neo4j数据库
    a graph database utility designed to help you view and modify Neo4j databases when it comes to various properties and relationships, as well as to create new nodes and relationships.

图数据库实例仿照练习(反欺诈)

  • 背景:First-Party- Bank-Fraud真名欺诈/第一方欺诈
    本质:实用本人或他人身份编造、伪造身份进行欺诈,具体到第一方银行欺诈就包括信用卡欺诈、贷款欺诈、透支欺诈、无担保信用额度欺诈等等,通过信用卡、贷款等工具从银行骗取资金,但根本没有偿还的意愿,这也是银行机构面临的一大问题。
    欺诈环通常的操作模式:
    一组两个或两个以上的人组成一个欺诈环,他们共享一个合法联系人的部分信息,然后通过信息的不同组合创建多个合成身份。欺诈环中的人员使用这些身份打开账户,正常地使用一段时间,银行因为检测到账户的合法行为不断增加信用额度。突然有一天,所有人最大化使用了信用额度然后消失了,导致了债务无法被追回。
    为什么用图数据库:
    Graphs are designed to express relatednessthey can uncover patterns difficult to catch by traditional database.
    图数据库的作用:不同阶段的实体集分析检验
  • 模拟步骤
  1. 创建3个联系人和三个账号
  2. 创建一个地址,将三个联系人关联到一个地址
  3. 创建两个电话号,将三个联系人针对两个电话号进行关联
  4. 创建两个SSN(社区安全账号),与三个联系人进行关联
  5. 三个账号各自申请信用卡或者无抵押借款
  6. 进行实体关联分析:查找共享多个合法联系信息的账户持有人,并计算可能的金融风险
    下面是实现的结果,具体代码附在结尾处了


    image.png

    然后针对这个模型进行一些实体联系的分析

  7. 分析共享多个合法联系信息的账户持有人


    image.png

    image.png

    image.png
  8. 计算可能的金融风险


    image.png

    image.png

    image.png

    image.png
create
(accountOwner1:AccountOwner{FirstName:"Sylvia",LastName:"Song",UniqueID:"SylviaSong"}),
(accountOwner2:AccountOwner{FirstName:"Angle",LastName:"Hao",UniqueID:"AngleHao"}),
(accountOwner3:AccountOwner{FirstName:"Jacky",LastName:"Song",UniqueID:"JackySong"}),
(address1:Address{Street:"123 NW1st Street",City:"Beijing"}),
(accountOwner1)-[:HAS_ADDRESS]->(address1),
(accountOwner2)-[:HAS_ADDRESS]->(address1),
(accountOwner3)-[:HAS_ADDRESS]->(address1),
(phoneNumber1:PhoneNumber{PhoneNumber:"111-111-11111"}),
(phoneNumber2:PhoneNumber{PhoneNumber:"222-222-22222"})
                                <-[:HAS_PHONENUMBER]-(accountOwner3),
(accountOwner1)-[:HAS_PHONENUMBER]->(phoneNumber1),
(accountOwner2)-[:HAS_PHONENUMBER]->(phoneNumber1),
(SSN1:SSN{SSN:"241-23-1234"}),
(accountOwner2)-[:HAS_SSN]->(SSN1),
(accountOwner3)-[:HAS_SSN]->(SSN1),
(SSN2:SSN{SSN:"241-23-5678"}),
(accountOwner1)-[:HAS_SSN]->(SSN2),
(creditCard1:CreditCard{AccountNumber:"1234567890123456",
                        Limit:5000,
                        Balance:1442.23,
                        ExpirarionDate:"01-20",
                        SecurityCode:"123"})<-[:HAS_CREDITCARD]-(accountOwner1),
(creditCard2:CreditCard{AccountNumber:"1234567890123456",
                        Limit:4000,
                        Balance:2345.56,
                        ExpirarionDate:"02-20",
                        SecurityCode:"456"})<-[:HAS_CREDITCARD]-(accountOwner2),
(bankAccount1:BankAccount{AccountNumber:"2345678901234567",
                          Balance:7054.43})<-[:HAS_BANKACCOUNT]-(accountOwner1),
(bankAccount2:BankAccount{AccountNumber:"3456789012345678",
                          Balance:4231.12})<-[:HAS_BANKACCOUNT]-(accountOwner2),
(bankAccount3:BankAccount{AccountNumber:"4567890123456789",
                          Balance:12345.45})<-[:HAS_BANKACCOUNT]-(accountOwner3),
(unsecuredLoan1:UnsecuredLoan{AccountNumber:"4567890123456789-0",
                              Balance:9045.53,
                              APR:.0541,
                             LoanAmount:12000.00})<-[:HAS_UNSECUREDLOAN]-(accountOwner2),
(unsecuredLoan2:UnsecuredLoan{AccountNumber:"5678901234567890-0",
                              Balance:16341.95,
                              APR:.0341,
                              LoanAmount:22000.00})<-[:HAS_UNSECUREDLOAN]-(accountOwner3)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 概率论与数理统计 无穷小阶数 无穷小量表述:线性逼近 相当于利用切线和斜率来理解误差和逼近。 泰勒级数:线性逼近 ...
    Babus阅读 808评论 0 1
  • Neo4j 一、什么是neo4j? Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不...
    会飞的蜗牛66666阅读 2,182评论 0 4
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,409评论 1 45
  • 一.编程基本概念 编程逻辑处理方式: 顺序执行 循环执行 选择执行 shell编程:过程式、解释执行编程语言的基...
    楠人帮阅读 1,368评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,084评论 1 32