array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Neo4j 知识图谱系列(一) - 爱码网

最近在研究知识图谱,目前市场上使用使用比较多的图谱包括Neo4j,Arango等。之前在一个商用知识图谱上用过Arango,感觉挺好。这次打算换一下,因为neo4j有免费版本,所以可以有机会自己好好研究下Neo4j的具体应用场景,

一、安装免费版本

       整个安装过程比较简单,先在Neo4j官网下载community免费版本。安装的过程需要在CMD环境下,比较简答,网上能搜到很多教程。没有出现太多问题。唯一的一个就是目前最新版本的Neo4j-community需要Java11环境支持。这个也不难,下载安装、配置好path就行。

       我在win和mac两台电脑上都装了,对比下来,感觉mac更方便一些,不需要配置太多乱七八糟的路径。搞定后在命令终端就可以启动了,如下图:

Neo4j 知识图谱系列(一)

Neo4j 知识图谱系列(一)

命令很简单,输入neo4j start, 就可以了。

启动成功后,在浏览器中输入localhost:7474,初始用户名、密码均为neo4j,就可以登录了。

界面比较简单,使用cypher简单创建一些元数据:

Neo4j 知识图谱系列(一)

这个界面颜色有点清淡,目前还不知道怎么调整,不过这不重要。

二、系统整好了,可以开始实践一下

       1、CQL的语法简单了解:CQL与SQL有一定的相似之处,而且都比较通俗易懂。其主要的一些关键命令包括:CREATE、MATCH、RETURN、DELETE、REMOVE、ORDERBY、SET, 主要函数有STRING、AGGRAGTION、RELATIONSHIP等。

             使用命令Create创建持卡人信息、信用卡信息:

CREATE (e:Customer{id:"10001",name:"ABC",dob:"01/01/1988"})
CREATE(cc:CreditCard{id:"50001",number:"123456789",cvv:"888",expiredate:"20/17"})

        构建承购后可以使用MATCH....RETURN组合进行查询:

MATCH(e:Customer)
RETURN e.id,e.name,e.dob

Neo4j 知识图谱系列(一)

也可以使用MATCH(cc:CreditCard) RETURN CC.id, CC.number, CC.cvv, CC.expiredate 查询卡片信息

    2、Neo4j图数据库遵循属性图模式来存储和管理数据,因此关系应该是有方向的,主要有单向关系和双向关系两种。基于上面创立的节点,进行关系的建立:

          MATCH(e:Customer),(cc:CreditCard)
          CREATE(e)-[r:Do_Shopping_With]->(cc)

           在这里,关系的标签为“r”,关系的名称为“Do_Shopping_With”,方向的标识是“->” ,很容易理解:e使用cc进行购物消费的关系。使用语句查询该关系MATCH (e)-[r]-(cc)  return e: 尝试使用语句MATCH(e)-[r:Do_Shopping_With]->(cc) RETURN r进行查询,同样成功,但是没有图展示,不知道为何。

Neo4j 知识图谱系列(一)

也可以同时创建多个实体:

CREATE(e:customer1:customer2:customer3:customer4)
CREATE(cc:CreditCard1:CreditCard2:CreditCard3:CreditCard4)

3、where语句:主要用来过滤MATCH查询的结果

   创建一个示例:

CREATE(dept:DEPT{deptno:10,dname:"ACCOUNTING",Location:"Hyderabad"})
CREATE(emp:Employee{id:123,name:"MAXMA",Salary:40000,depto:10})

Neo4j 知识图谱系列(一)

4、AGGREGATION函数:聚合函数:

创建示例并查询:

MATCH (emp:Employee)
RETURN emp.id,emp.name, emp.Salary,emp.depto

Neo4j 知识图谱系列(一)

MATCH(emp:Employee) RETURN COUNT(*)

Neo4j 知识图谱系列(一)

MATCH(e:Employee) return MAX(emp.Salary), MIN(emp.Salary)

Neo4j 知识图谱系列(一)

Neo4j 知识图谱系列(一)

基本功能主要就是这些,接下来主要基于某些场景创建图和网络,并基于创建的网络进行一些有价值的分析。

相关文章: