在过去的几天里,我一直在关注DHH兴起的“我的名字是……”的推文。 据我了解,其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。

您好,我叫大卫。 我将无法在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语。

— DHH(@dhh) 2017年2月21日

其他人引用了该推文并添加了自己的文章,昨天Eduardo Hernacki建议遍历这条推文链似乎是为Neo4j量身定制的。

@eduardohki是遍历所有这些东西的人吗? #Neo4j

— Eduardo Hernacki(@eduardohki) 2017年2月28日

Michael很快就出现在现场,并创建了一个Cypher查询,该查询调用Twitter API,并根据生成的JSON响应创建Neo4j图形。 唯一棘手的一点是创建“承载者令牌”,但是Jason Kotchoff有一个很有帮助的要点,展示了如何从您的Twitter消费者密钥和消费者秘密中生成一个。

现在我们已经获得了承载令牌,让我们创建一个参数来存储它。 在Neo4j浏览器中键入以下内容:

:param bearer: '<your-bearer-token-goes-here>'

现在,我们准备查询Twitter API。 我们将从搜索API开始,找到包含文本“我的名字”“我在工作”'的所有推文。 这将返回一个包含大量推文的JSON响应。 然后,我们将为它返回的每个推文创建一个节点,为发布该推文的用户创建一个节点,为其引用的推文创建一个节点,以及将它们粘合在一起的关系。

我们将使用APOC库中的apoc.load.jsonParams过程来帮助我们导入数据。 如果要继续学习,可以使用安装了APOC的Neo4j沙箱实例 。 对于本地Neo4j安装,在重新启动Neo4j之前,请抓住APOC jar并将其放入您的plugins文件夹中。

这是完整的查询:

WITH 'https://api.twitter.com/1.1/search/tweets.json?count=100&result_type=recent⟨=en&q=' as url, {bearer} as bearerCALL apoc.load.jsonParams(url + "%22my%20name%22%20is%22%20%22I%20work%22",{Authorization:"Bearer "+bearer},null) yield valueUNWIND value.statuses as status
WITH status, status.user as u, status.entities as e
WHERE status.quoted_status_id is not null// create a node for the original tweet
MERGE (t:Tweet {id:status.id})
ON CREATE SET t.text=status.text,t.created_at=status.created_at,t.retweet_count=status.retweet_count, t.favorite_count=status.favorite_count// create a node for the author + a POSTED relationship from the author to the tweet
MERGE (p:User {name:u.screen_name})
MERGE (p)-[:POSTED]->(t)// create a MENTIONED relationship from the tweet to any users mentioned in the tweet
FOREACH (m IN e.user_mentions | MERGE (mu:User {name:m.screen_name}) MERGE (t)-[:MENTIONED]->(mu))// create a node for the quoted tweet and create a QUOTED relationship from the original tweet to the quoted one
MERGE (q:Tweet {id:status.quoted_status_id})
MERGE (t)–[:QUOTED]->(q)// repeat the above steps for the quoted tweet
WITH t as t0, status.quoted_status as status WHERE status is not null
WITH t0, status, status.user as u, status.entities as eMERGE (t:Tweet {id:status.id})
ON CREATE SET t.text=status.text,t.created_at=status.created_at,t.retweet_count=status.retweet_count, t.favorite_count=status.favorite_countMERGE (t0)-[:QUOTED]->(t)MERGE (p:User {name:u.screen_name})
MERGE (p)-[:POSTED]->(t)FOREACH (m IN e.user_mentions | MERGE (mu:User {name:m.screen_name}) MERGE (t)-[:MENTIONED]->(mu))MERGE (q:Tweet {id:status.quoted_status_id})
MERGE (t)–[:QUOTED]->(q);

生成的图形如下所示:

MATCH p=()-[r:QUOTED]->() RETURN p LIMIT 25

一个更有趣的查询是找到从DHH到Eduardo的路径,我们可以通过以下查询找到该路径:

match path = (dhh:Tweet {id: 834146806594433025})<-[:QUOTED*]-(eduardo:Tweet{id: 836400531983724545})
UNWIND NODES(path) AS tweet
MATCH (tweet)<-[:POSTED]->(user)
RETURN tweet, user

该查询:

  • 从DHH的推文开始
  • 遍历所有QUOTED关系,直到找到Eduardo的推文
  • 收集所有这些推文,然后找到作者
  • 返回推文和作者

这是输出:

我针对Twitter API进行了其他一些查询,以混合一些我们尚未设置所有属性的节点-您可以在此要点上查看所有查询 。

在接下来的几天里,我还将有一个运行https://10-0-1-157-32898.neo4jsandbox.com/browser/的沙箱。 您可以使用凭据readonly / twitter登录。

如果您有任何疑问/建议,请在评论中告诉我, 或者在Twitter上@markhneedham ,或给Neo4j DevRel团队发送电子邮件至devrel@neo4j.com。

翻译自: https://www.javacodegeeks.com/2017/03/neo4j-graphing-name-work-twitter-meme.html

Neo4j:绘制“我的名字是……我在工作”图相关推荐

  1. neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图

    neo4j 显示名字 在过去的几天里,我一直在关注DHH发起的有关"我的名字是--"的推文. 据我了解,其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的. 您好,我叫大卫. 我不 ...

  2. 最全Python绘制饼形图(饼状图)

    饼状图(pie chart)一般用于描述分类型数据的相对频数或百分数频数分布,呈现部分与总体的关系.    一.导入绘图数据 首先导入绘图所需的数据. import os import pandas ...

  3. swot分析模板_什么是SWOT分析图?怎样绘制SWOT分析思维导图,这样操作很简单

    什么是SWOT分析图?大到企业小到个人都会使用到SWOT来对自身所具备的能力进行分析,这也印证了SWOT分析图的重要性,下面我们一起来深度了解SWOT分析吧!! 一:什么是SWOT分析图 所谓SWOT ...

  4. allow control allow origin_Origin绘图笔记(一)——如何高效绘制一个漂亮的数据图...

    软件版本:2018(2019及以上版本功能改进较大,虽然增加了一些功能,但很多操作化简为繁,不建议使用) 步骤1:管理好工作表 想要绘制一个漂亮的数据图,我认为理解工作表Sheet是很有用的,而这也是 ...

  5. python+matplotlib绘制南丁格尔玫瑰图

    实验:绘制南丁格尔玫瑰图   本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫 ...

  6. 如何用算法绘制一张上海外滩夜景图

    突发奇想:一个数学界的未解之谜 无意间想到一个有趣的数学问题,也是数学界困扰人类很久的一个谜题: 克拉茨猜想 (图片来源 [数学狂]如何形象地展示克拉茨猜想 -- Collatz Conjecture ...

  7. 怎样绘制英语学习思维导图?简单的方法介绍

    思维导图不仅在工作中帮助了我们很多,在学习中同样也是一个很好的辅助工具,它可以将学习到的知识点进行总结归纳之后使用.不仅上下级分布清楚,使用起来也是较为方便,对记忆有很大的帮助,那怎样利用思维导图绘制 ...

  8. 使用UMLet绘制用例图及活动图

    使用UMLet绘制用例图及活动图 UMLet是一款开放源代码的轻量级UML建模工具,它能够帮助我们快速地构建用例图.活动图等各种 UML模型. 用例图充当用户要求说明的焦点. 它描述要求.用户和主要组 ...

  9. 回归 统计绘图_手把手教绘制回归分析结果的森林图「GraphPad Prism和Excel」

    在之前的内容中,我们讲到通过展示森林图,可以更加直观的将回归分析结果可视化.详见:一文带你玩转森林图! 在本期内容中,我们来实际操练一下,介绍几款常用的软件,教大家绘制出高质量的森林图. 下面我们以2 ...

最新文章

  1. web前端 —— 移动端知识的一些总结
  2. KMP算法之 好理解的模板
  3. Java笔记(七)HashMap和HashSet
  4. 自适应登陆html5,html5验证自适应
  5. 新手求大神,有其他swit-case的思路写这个程序么?
  6. 赢在中国 (2008-3-19)
  7. mysql数据库varchar_MySQL数据库char与varchar的区别分析及使用建议
  8. AKKA Actor创建
  9. 《Linux编程》作业 ·003【文件I/O操作】
  10. Jersey +jetty 实现微服务(一)
  11. virtualenv虚拟独立python环境使用
  12. Hadoop学习笔记(4)hadoop集群模式安装
  13. b站 前端构架_技术干货:哔哩哔哩(B站)功能框架图
  14. tomcat 调优-生产环境必备
  15. mysql 时间类型datetime与timestamp区别比较
  16. DNS 技术标准综述
  17. 【HBase 进阶】-- Region 过多的影响 合理分区数量
  18. Batch Size 对训练的影响
  19. 基本函数依赖和候选键_[总结]关系数据库设计基础(函数依赖、无损连接性、保持函数依赖、范式、……)...
  20. Cocos Creator 位图字体(艺术数字配置、BMFont)

热门文章

  1. java.util.Stack类简介
  2. laravel使用migrate操作数据库迁移
  3. 解决idea中xml文件报红问题
  4. 【最全最详细】publiccms其他常用代码片段(内容、站点)
  5. 《朝花夕拾》金句摘抄(一)
  6. 利用老毛头启动盘重装win7
  7. SpringCloudStream
  8. mysql group和order_mysql 用 group by 和 order by同时使用
  9. springboot yml里面配置list 日期日期格式的postMen 发送json
  10. nginx解析php失败,为什么nginx不能解析php?