
APOC
文章平均质量分 71
俞博士
专注图数据库、图深度学习和行业应用的技术直男。
e: joshua.yu@neo4j.com
展开
-
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.9 - 图生成 简单图
1、概述 apoc.generate.simple过程根据指定的节点度数生成图。该过程要求一个非负整数的数组作为参数之一,其中的每个元素是节点的度,例如:[2,2,2,2]表示4个节点,每个节点的度都是2。[2,2,3,3]表示4个节点,其中2个节点的度是2、2个节点的度是3。节点的度数的顺序无关,但是最终生成的必须是合法的图,即每条边必须连接2个节点。[1,2,3,4]这样的序列会产生错误,因为无法构造一个合法的图,其中4个节点的度数分别是1、2、3、4。(不信的话你可以在纸上画来试试?...原创 2022-04-18 12:25:24 · 1005 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.8 - 图生成 完全图
1、概述apoc.generate.complete 本过程生成一个完全图。完全图中,每个节点有到所有其他节点的边。在无向图中,有N个节点的完全图有N x (N – 1) / 2个边。Neo4j在存储关系时必须指定关系的方向,因此APOC会生成从id较小的节点出发、到id较大的节点的边。2、过程调用接口 过程接口 CALL apoc.generate.complete( noNodes, label, relTy...原创 2022-04-18 12:18:07 · 887 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.7 - 图生成 无标度网络
1、概述Barabási和Albert(1999)的“富者更富”(Rich get richer)生成模型(BA模型)最被熟知的无标度网络子集的生成模型。它让每个网页根据一个非均匀的概率分布与已有网页建立连接,这个概率分布与当前网页的入度数成比例。根据这个过程,拥有更多入度的的网页相较一般网页会吸引更多的链接。这样的机制会产生“幂律”(Power Law)。 和无标度网络相关的另外一个耳熟能详的名词是“长尾效应”。 无标度网络(scale-free network)是...原创 2022-03-14 20:18:01 · 1398 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.6 - 图生成 小世界模型
1、概述WS小世界模型(Watts - Strogatz model)是一种随机图生成模型,其生成的图具有小世界属性,包括较短的平均节点间距离和高集聚系数。该模型由Duncan J. Watts(邓肯 J. 沃茨)和Steven Strogatz(斯蒂文·史楚盖兹)在1998年两人联合发表于《自然》的论文中提出 。Watts在其广受欢迎的科学读物《六度》中使用b来阐述该模型,这之后,该模型也被称为(沃茨)b模型。WS图拥有以下特征:可以生成局部集聚(local clustering)和三元闭合,原创 2022-02-16 15:41:34 · 905 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.5 - 图生成 / 随机图
1、概述图生成过程用来生成不同类型的随机图,以用作算法研究、性能测试等目的。APOC提供下列随机图生成过程。 过程 说明 apoc.generate.er(noNodes, noEdges, 'label', 'type') 根据Erdős–Rényi模型[1](ER)生成图(随机网络)。 apoc.generate.ws(noNodes, degree, beta, 'label', 'type')原创 2022-01-17 21:28:10 · 883 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC (8.4) - 集合相关操作
1、概述在Cypher查询语言中,集合的使用非常普遍。集合的元素可以是简单类型的值、节点、关系、路径,甚至混合类型。下面的例子是产生集合的一些常用方法:// 返回一个包含从1到10 的整数集合RETURN range(1,10) AS collection;// 返回节点的集合MATCH (n:Node)RETURN collect(n) AS nodeColl// 提取路径中的节点和关系集合MATCH path = (from:Node) -[:REL]-> (to..原创 2021-12-15 12:18:43 · 1645 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC (8.3) - 地图和空间相关功能
1. 概述从Neo4j 3.5以后,地理坐标作为Point数据类型成为数据库模式支持的类型,另外数据库也提供基本的操作函数,例如计算两个坐标之间距离的函数distance()。更多关于Neo4j坐标类型和函数操作的介绍请参见:Spatial functions - Neo4j Cypher Manual。 因此,一些在早期APOC版本中包含的关于地理位置的过程和函数已经不再需要。APOC目前仍然提供的相关过程如下。注意,默认情况下APOC使用来自OpenStreetMap的地址服务。可...原创 2021-09-29 16:07:12 · 661 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC (8.2) : 实用路径操作过程
8.2 路径相关操作8.2.1 概述 APOC中的路径相关函数可以对查询返回的路径进行合并、切分操作,创建虚拟路径,以及返回完整路径。 函数名称 说明 apoc.path.combine(path1, path2) YIELD path 如果连接节点匹配,则将路径合并为一个。 apoc.path.create(startNode,[rels]) YIELD path ...原创 2021-09-15 20:23:01 · 595 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC (8.1) : 实用节点操作过程
类型 名称 说明 函数 apoc.any.properties (node/rel/map,) 返回虚拟和真实节点、关系和MAP数据结构的属性,可通过属性名进行过滤。 函数 apoc.any.property(node/rel/map) 返回虚拟和真实的节点、关系和MAP数据结构的属性。 函数 ...原创 2021-08-31 09:56:35 · 617 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC (7.1) : 元数据管理
1.概述Neo4j是“轻型模式数据库”(Schema-lite),对所存储数据的类型和格式要求没有关系数据库那样严格。然而,作为数据库管理系统,Neo4j还是有相关元数据管理功能的。在Neo4j Browser中可以通过执行::schema命令查看索引和限制;或者显示图结构的元模型:CALL db.schema.visualizationAPOC中还提供了更多元数据相关功能。2.APOC中的元数据管理功能 除了Cypher中提供的查看数据库中元数据(meta...原创 2021-08-19 09:21:15 · 590 阅读 · 1 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC(6.7):将属性值转换成节点
1. 定义 “分类”过程实现属性值到节点的转换。针对数据库中所有节点的指定属性,对每个唯一属性值建立新类别节点、并创建新关系连接节点到这些类别节点。2. 过程调用接口 过程接口 // 对节点进行分类 CALL apoc.refactor.categorize( sourceKey, type, outgoing, label, targetKey, ...原创 2021-06-23 09:18:28 · 340 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC(6.6):节点和关系的相互转换
定义 可以将指定关系转换成节点,并在关系的原起始节点和新节点、以及终止节点和新节点之间使用新的关系相连接。被转换的关系的属性则成为新节点的属性。原创 2021-06-07 13:31:52 · 430 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC - apoc.periodic.iterate()过程在4.0版本中的重大变化
作者:维韦克 萨兰(Vivek Saran)适用版本:Neo4j 4.0 / 4.1标签:APOC在Neo4j 3.5中,可以在一个事务中获取实体(节点、关系、路径)并安全地在另一个事务中重用。然而在4.0中,这些实体将拥有返回它们的事务的引用。对于任何创建新事务的APOC调用中,这会带来问题,例如apoc.periodic.iterate(以及另外2个)。 从驱动查询(driving)声明中提出的任何实体都必须在任务查询(action)声明中重新绑定。这意味着我们基本上需要..翻译 2021-05-18 22:03:57 · 1116 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.5) - 修改关系
1.重定向关系1.1定义 将指定关系重定向到新的节点。新的节点可以是被重定向的关系的起始节点(使用refactor.from()),也可以是终止节点(使用refactor.to())。1.1.1 过程调用接口 过程接口 CALL apoc.refactor.from( relationship, startNode ) YIE...原创 2021-05-18 21:49:57 · 608 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.5) - 导入JSON数据
1.定义 Web API/RESTful API是访问和集成外部数据源又一种常用的接口。目前,很多网站和应用服务都提供类似开放接口供其他应用读取其数据,而这些接口都使用JSON[1]作为数据格式。 APOC提供导入JSON格式数据的相关过程,支持从URL读取数据内容并转换成MAP结构的表示以方便在Cypher查询中使用。Cypher可以很方便地将嵌套的文档结构转换成属性图结构。 APOC同时还支持JSON Path[1],即以特定模式搜索JSON文档中...原创 2021-04-28 09:54:59 · 2103 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.4) - 合并节点和关系
1.合并节点1.1定义 根据指定规则合并数组中的节点及其属性、并删除被合并的节点。1.2过程调用接口 过程接口 // 合并节点 CALL apoc.refactor.mergeNodes( nodes [node1, node2, …], { configurations } ) YIELD node 参数名 类型...原创 2021-04-05 20:34:55 · 2187 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.3)- 克隆子图
1.概述 可以使用cloneSubgraph()和cloneSubraphFromPaths()克隆由节点列表、关系列表或路径列表定义的子图。如果未在过程调用时指定关系,则将克隆给定节点之间的所有关系。 在配置选项{configuration}中,可以提供一个“接入节点(standinNodes)列表”,该列表包含节点对的集合,指定图中的某些现有节点可以充当克隆子图中其他节点的“接入节点”(standin node)。接入节点会与克隆后的子图中指定节点之间建立关系。...原创 2021-03-23 12:35:05 · 411 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.2)- 克隆节点和关系
6.2、克隆节点6.2.1 定义 克隆节点及其所有属性到新节点。被克隆节点的关系在缺省情况下则不被复制。6.2.2 过程接口 过程接口 CALL apoc.refactor.cloneNodes( nodes [node1, node2, …], withRelationships, skipProperties ) YIELD inpu...原创 2021-03-09 15:55:33 · 470 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.1)- 图重构 概述
Neo4j图数据库除了对复杂、深度查询的性能有更好的支持之外,其灵活的数据库模式(schema)管理是另外一个在处理大数据方面的独特优势。随着数据的积累和应用需求的演变,我们往往会意识到最初的数据库模型不再是最优化和最适合的,这时就需要进行数据库模式的重构(Refactoring)。APOC的图重构(Refactoring)过程提供对图中节点、关系和属性的转换、合并、复制等功能。Neo4j的图模式重构不像关系数据库那样需要删除和重新创建表、涉及复杂的运维操作,使用APOC中提供的过程可以方便的实现。原创 2020-12-08 11:31:21 · 523 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.4) - 导出数据到Cypher脚本文件
APOC提供一系列过程实现将数据库中的数据导出到可执行的Cypher脚本文件。这些过程支持不同的导出逻辑:导出所有数据 导出查询结果 导出特定标签节点和关系类型 导出一个graph对象 仅导出索引和限制(index和constraint) 将数据库中的内容导出到Cypher文件,可以用于数据迁移、集成和转换等目的。1、导出所有节点、关系和属性CALL apoc.export.cypher.all( file, {configuration}) ...原创 2020-11-11 13:32:16 · 853 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.3) 导入JDBC数据源的数据
1、概述APOC提供的JDBC相关过程支持从任何可以通过JDBC访问的数据源中提取数据、并加载到Neo4j中。通过JDBC驱动执行查询得到的结果,以记录流的方式返回(如果JDBC数据源支持流模式)。APOC也支持对远端数据库的更新操作。JDBC相关过程如下: 过程名 调用接口 说明 apoc.load.driver apoc.load.driver(driverClassName)原创 2020-11-02 15:05:29 · 923 阅读 · 3 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.2) 导入CSV文件中的数据
1.定义 CSV是最常用的数据交换格式,被各类应用广泛使用。Neo4j提供IMPORT数据导入命令行工具(neo4j-admin import,只能离线使用),以及在Cypher中提供LOAD CSV来实现从CSV文件中导入数据到数据库中。 APOC的CSV导入过程则提供了更丰富的特性:为每行增加了行号 为每行提供了MAP和LIST两种数据表示 自动的数据类型转换(包含分解列表到数组) 保持字串原始格式的选项 忽略字段的选项 没有标题的文件...原创 2020-10-08 12:33:33 · 1564 阅读 · 2 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.1) - 导出数据到CSV文件
1、配置要求为了能够使用APOC过程导出数据,需要增加下面的配置项: neo4j.conf apoc.export.file.enabled=true 为了能够使用APOC过程导入数据,需要增加下面的配置项: neo4j.conf apoc.import.file.enabled=true APOC的数据导入和导出目录是服...原创 2020-06-22 22:46:50 · 1178 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.7) - Cypher语句的条件分支
1、概述APOC提供以下过程来运行有条件分支的Cypher语句。 接口 过程 CALL apoc.when( condition, ifQuery, elseQuery:'', params:{} ) YIELD value 基于条件,执行给定参数的ifQuery或elseQuery只读查询。 CALL apoc.do.when( condition, ...原创 2020-06-22 22:41:54 · 1233 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.6) - 并行执行Cypher
Cypher的执行在缺省情况下都是单线程的。而有时,我们需要并行执行查询,例如对一个名称列表,查询它们在图中的邻居。这里,可以用APOC的Cypher相关过程runParallel()。// 并行初始化并执行查询。 // 缺省情况下,最大分区数/并行数为CPU内核数 x 100; // 最多批次数为10000。例如,如果Neo4j数据库被分配了4个内核, // 那么并行的最多进程数为400。CALL apoc.cypher.parallel( fragment, params,原创 2020-06-15 16:21:17 · 765 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.5) - 动态Cypher执行
有时候,我们需要更加灵活的Cypher查询执行,例如在创建节点时根据变量的值决定节点的标签,这时可以使用APOC中cypher执行相关的过程。 接口 功能 CALL apoc.cypher.run( fragment, params ) YIELD value 使用给定的参数执行数据库读取查询。 函数 apoc.cypher.runFirstColumnSingle ..原创 2020-06-15 15:20:23 · 1368 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.4) - 自定义Cypher函数和过程
1、定义APOC提供相关过程来创建用户自定义的函数和过程。这些函数和过程实际上是参数化的Cypher语言查询,类似宏(Macro)的概念。相关过程如下:apoc.custom.asFunction(),创建用户自定义函数; apoc.custom.asProcedure(),创建用户自定义过程。用户自定义函数和过程可以通过CALL dbms.functions和CALL dbms.procedures查看,所有自定义函数和过程自动被加上custom为前缀,例如custom.MyProcedure原创 2020-06-07 20:32:01 · 1002 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.3) - 后台执行查询submit
1、定义对于复杂的更新数据库的Cypher查询,可以使用APOC的submit()过程异步执行该查询。APOC还提供下面的过程管理异步/后台执行的任务:apoc.periodic.list():列出所有正在后台执行的任务 apoc.periodic.cancel(taskName):终止后台任务管理正在运行的查询是Neo4j企业版才有的功能。因为APOC可以同时运行在Neo4j社区版和企业版上,使用上述APOC异步执行过程使得社区版同样拥有部分管理后台查询的能力。2、过程概述apoc.p原创 2020-06-07 20:24:16 · 801 阅读 · 1 评论 -
从文本到知识:Neo4j 图数据库 + NLP (自然语言处理) 实现案例
我们现在处于“大数据时代”,而在浩繁的“大数据”中,绝大多数是文本形式的非结构化数据。图其实可以非常灵活和有效的表示和处理文本内容中的词语、概念、依存关系,并用作知识推理、情感分析、智能问答等丰富的应用中。 本文以百度云的自然语言处理API服务为例,介绍怎样将文本分析的结果保存到Neo4j图数据库中。1、准备 Neo4j图数据库3.5.*。 APOC扩展包。关于如何安装APOC,请参见这里。我们要用到APOC中访问RESTful AP...原创 2020-05-22 09:37:34 · 4612 阅读 · 0 评论 -
Neo4j高级应用技术专题系列 - APOC存储过程库-【2】路径扩展过程
Neo4j高级应用技术专题系列 - APOC存储过程库-【2】路径扩展过程使用apoc中的函数和过程:了解图数据库中已有数据的模型apoc.meta.graph()apoc的路径扩展函数expand()和expandConfig()虚拟关系和路径:apoc.create.vRelationship()即时创建属性和关系处理列表型数据的Cypher函数:filter()e原创 2018-01-06 10:19:30 · 3668 阅读 · 1 评论 -
Neo4j高级应用技术专题系列 - APOC存储过程库-【3】优化数据库写入性能
很多人提到Neo4j的数据库更新太慢。希望这篇文章能够给大家一个思路,一种方法和一些经验。全文下载链接:PDF文件原创 2018-01-17 11:20:09 · 1762 阅读 · 2 评论 -
Neo4j Java开发快速指南 - 第一部分
简要介绍Neo4j的Java开发接口和方法,帮助快速掌握客户端应用开发。第一部分: PDF文件下载原创 2018-02-06 16:34:50 · 1601 阅读 · 4 评论 -
Neo4j Java开发快速指南 - 第二部分
简要介绍Neo4j的Java开发接口和方法,帮助快速掌握客户端应用开发。第二部分: PDF文件下载原创 2018-02-07 06:43:28 · 786 阅读 · 1 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (2) - 安装和配置
2.1 扩展包的下载 ALGO和APOC扩展包是二进制JAR文件,可以直接下载、安装,经过简单配置即可使用。 APOC的下载链接是:http://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/,在线文档:https://neo4j-contrib.github.io/neo4j-apoc-proc...原创 2019-06-05 10:15:38 · 681 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.2) - 可配置的路径扩展过程
1. 定义 可配置的路径扩展过程提供完整的配置参数来控制遍历过程。2.过程调用接口 过程接口 CALL apoc.path.expandConfig( startNode <id>Node/list, { minLevel, max...原创 2019-06-13 21:28:43 · 1441 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.3) - 搜索子图
1.定义 搜素子图的过程使用与路径扩展类似的方法从指定节点出发、沿着特定关系类型遍历,并返回能够到达的所有节点和关系。 APOC提供两种搜素子图的过程: - subgraphNodes():仅返回可以到达的节点; - subgraphAll():返回节点和关系。 与路径扩展过程expand和exp...原创 2019-06-18 21:15:27 · 2693 阅读 · 5 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (1) - 概述
随着Neo4j图数据库学习和应用不断普及、特别是对复杂图操作的需求越来越多样化,Neo4j的服务器端扩展包越来越多地被提及和使用。从2019年6月起,将连载Neo4j迄今为止发布的最重要的两个扩展包APOC和ALGO中主要过程的用途、用法和样例,供大家学习和讨论。相关内容计划在明年初成书出版,欢迎提出问题和意见!1.1 背景 Neo4j图数据库扩展是基于Ne...原创 2019-06-02 22:27:59 · 1159 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.1) - 基本路径扩展过程
1、概述路径扩展过程(Path Expanding)是从指定的一个或一组起始节点开始,根据过滤规则沿着特定关系依次访问其他相连节点的过程。该过程迭代执行,直到没有更多相连节点或者预设的结束条件满足时终止。路径扩展可以看作是图的遍历(Graph Traversal)的一种实现方式。2、应用在Cypher中也可以实现图的遍历。APOC的路径扩展过程除了调用方法不一样以外,还具有下面的优势:1...原创 2019-06-09 12:37:55 · 1313 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.1) - 查询任务管理
概述 APOC扩展包中的查询任务管理提供相关过程帮助将复杂查询分解成较小的批次迭代执行,从而减少事务处理的开销、提高内存使用效率。 Cypher的LOAD CSV语句允许通过USING PERIODIC COMMIT 指定批次大小,以减小更新事务的规模、提高性能并降低对内存(主要是Java堆内存/Heap Memory)的需求。对于其他Cypher语句,例如CRE...原创 2019-06-26 09:28:45 · 1791 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.2) - 循环执行 commit
2.按照条件循环执行 - commit2.1 定义 commit()过程包含两个子操作:1) 第一个是查询操作,返回指定数量的、符合条件的数据库对象; 2) 第二个是更新操作,对第一个查询中返回的每个对象进行相应的更新操作。第二个操作通常在不同的事务中执行。 上面的两个步骤重复执行,直到第一个查询操作返回空的结果集合。...原创 2019-06-26 09:36:42 · 1338 阅读 · 0 评论