问题标签 [neo4j-java-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rest - Neo4j 性能 Neo4j REST API 与 Neo4j Java 驱动程序
我们当前的实现通过 REST API 对 Neo4j 进行了所有调用。我们正在通过 neo4j-java-driver 替换部分代码。我们遇到了一些性能问题,我们试图通过 Cypher 优化和将负载从 Neo4j DB 转移到应用层来解决这些问题。使用 java 驱动程序,它会进一步减少 Neo4j DB 的负载,还是仅仅有助于减少网络延迟?
java - 在 Neo4j Java 驱动程序中获取节点的属性
我正在使用neo4j,我有带有neo4j服务器的linux笔记本电脑,我做了所有配置,所以我可以从mac访问ip/浏览器,之后我试图从我正在使用的java项目远程使用它java-driver 因为 neo4j-embedded 似乎不支持远程连接,所以问题是我如何获取所有节点并打印属性:
在下面的代码中我有 match(p:Book)return p
如果我尝试迭代“p”我没有得到属性,但我使用的是
match(p:Book) 返回 p.title,然后我可以看到 title 属性的值,
我有 3 个节点书籍: Book( title:"book1", author:"author1" ) Book( title:"book2", author:"author2" ) Book( title:"book3", author:"author3" )
这只是打印如下内容:
->node<0>
->node<1>
->node<2>
java - 如何使用 Java API 在 Neo4j 中的节点/关系上添加用户定义的约束
L1
考虑我在Neo4j数据库中有一个具有标签的节点。我需要对所有具有标签的节点进行约束,以使L1
这些节点没有传出边缘。因此,每当用户尝试从这些节点添加出边时,就会发生约束冲突。是否可以在节点和关系上添加用户定义的约束?
如果是,我如何使用Neo4j Java API 对节点/关系施加这样的约束?
neo4j - 使用遍历框架在 Neo4j 中编码一种随机游走
我目前正在研究一个节点通过概率边连接的图。每条边上的权重定义了边存在的概率。
这是一个示例图,可帮助您入门
我想使用 Neo4j Traversal Framework 从 (A) 开始遍历这个图,并根据沿途找到的边的概率返回已经到达的节点数。
重要的:
- 到达的每个节点只能计算一次。-> 如果(A)到达(B)和(C),那么(C)不需要到达(B)。另一方面,如果 (A) 未能到达 (B) 但到达 (C),则 (C) 将尝试到达 (B)。
- 如果(B)到达(C)也是如此,(C)不会再尝试到达(B)。
- 这是一个离散时间步长函数,一个节点只会尝试到达相邻节点一次。
- 为了测试边是否存在(我们是否遍历它),我们可以生成一个随机数并验证它是否小于边权重。
我已经将遍历描述的一部分编码如下。(这里可以从多个节点开始,但这不是解决问题所必需的。)
我跟踪达到的节点数,如下所示:
这段代码的问题在于,虽然 NODE_PATH 已定义,但可能存在我不想要的循环。
因此,我想知道:
- 是否有解决方案可以避免循环并准确计算达到的节点数量?
- 理想情况下,是否可以(或更好)使用 PathExpander 做同样的事情,如果可以,我该如何进行编码?
谢谢
java - 如何使用java 8并行流进行neo4j图遍历和处理
我目前正在使用 Neo4j 图形数据库。我正在尝试从 startNode 并行遍历节点。以下是代码:
它给出了错误:无法执行请求的操作,因为它必须在事务中执行。确保您将操作包装在适当的事务样板中,然后重试。
我该如何进行?
neo4j - Neo4j 密码返回具有特定格式的路径
我有一个密码查询来返回两个节点之间的最短路径。
我正在使用 Java JdbcTemplate。
我的问题是我有一个 Util 方法来映射 jdbctempate 结果。它仅在我的密码返回节点时才有效,例如:
有没有办法让我的初始密码以这种格式返回结果?
neo4j - 在查询 shortestPath 时获取关系
我试图找到两个节点之间的最短路径,我想获得关系(开始节点、结束节点和类型),以便我可以在 Java 中生成一个子图。
我正在使用这个密码:
MATCH (nodeA),(nodeB), p = shortestPath((nodeA)-[*..15]-(nodeB))
WHERE ID(nodeA) = 1332076 AND ID(nodeB) = 1459451
UNWIND nodes(p) as n
UNWIND relationships(p) as r
RETURN collect(distinct { id : id(n), labels : labels(n), data: n}) as nodes, collect(distinct r) as relationships
我的问题是关系以我不理解的格式返回。像这样 :
{
"TFFamily": "MADS",
"Category": "DIRECT",
"PubMedID": "UNKNOWN",
"Reference": "NA",
"Interaction": "UNCONFIRMED",
"TargetType": "AT2G36590",
"Confirmation": "NO",
"isTF": "AT2G36590"
}
{
"HIT_END": "104",
"BLAST_alignement_length": "52",
"BLAST_evalue": "4.00E-27",
"HIT_START": "53",
"BLAST_percentage_identity": "82.69",
"percentage_match": "43.7",
"QUERY_START": "58",
"clusterid": "CLUSTER_5713",
"QUERY_END": "109",
"BLAST_mismatches": "9",
"BLAST_nrofgaps": "0"}
究竟是什么关系(p)?有没有办法获取 startId、endId 和类型?
谢谢
编辑 :
可能的解决方案:
不确定这是否是最佳选择,但我发现有startNode(r) 和 endNode(r)
neo4j - Neo4j 使用 neo4j-jdbc 删除节点属性
我有几个属性的优势。我想保持优势,但只删除 name 属性。
我的 java Cypher 是这样的:
它适用于密码控制台,但不适用于 jdbc。
我收到了这个错误:
处理失败;嵌套异常是 org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; SQL [MATCH ()-[r]->() 的未分类 SQLException 其中 id(r) = {1} REMOVE r.{2} RETURN r]; SQL 状态 [null]; 错误代码[0];发生一些错误:[Neo.ClientError.Statement.SyntaxError]:Invalid input '{': expected an identifier, whitespace, a function name or a property key name (line 1, column 45 (offset: 44)) "MATCH () -[r]->() where id(r) = {1} REMOVE r.{2} RETURN r" `
有什么建议么?
谢谢
编辑
我无法使用 jdbc 模板。所以我使用了字符串替换:将属性设置为 NULL 将删除该属性(http://www.baeldung.com/java-neo4j)
解决方案:Java:
密码:
java - 查询neo4j java后获取路径
我正在尝试进行查询以查找与模式“(订单)-[订单]->(产品)-[PART_OF]->(类别)”相对应的所有可能路径,并希望获得整个路径(即所有 3 个节点和 2 个关系作为它们的适当类)。
我在下面使用的方法只让我有 1 列数据(订单数:2155)。如果我再试一次(第二个 for 循环),我得到的行数是 0(产品数:0)。有没有办法将所有结果保存为节点和关系,还是我必须查询该命令 5 次?请帮忙!
java - Neo4J java 驱动程序 - org.neo4j.driver.v1.exceptions.UntrustedServerException:服务器未提供产品标识符
将我的 neo4j-java-driver 从 1.0.5 更新到 1.7.2 后,我无法在 Neo4J 上运行任何查询。
上面的测试适用于 1.0.5 版本,但在 1.7.2 版本中失败,并出现以下错误:
org.neo4j.driver.v1.exceptions.UntrustedServerException:服务器未提供产品标识符
有谁知道与以前驱动程序的https://github.com/neo4j-examples/neo4j-movies-java-bolt示例类似的新驱动程序版本的示例?