存在双向关系时Neo4j cypher单向查询

标签 neo4j cypher ontology semantic-markup medical

我认为不可能做我正在寻求的事情,但我想我会为了创造性的建议而放弃它。统一医学语言系统(UMLS;https://uts.nlm.nih.gov/home.html)是一种语义本体,在节点之间具有多种双向关系。例如,x 是 y,y inverse_isa x。问题是这样的名字有很多,而且它们的关系是相反的。因此,在查询中,仅仅排除一个是不够的,因为列表有多种可能性,这很麻烦并且可能会忽略某些内容。换句话说,问题是当存在会反转遍历的关系时,您是否可以创建有向非循环图查询。如果有从节点 x 到 y 的出站关系,则需要忽略从 y 到 x 的入站关系。我正在使用 Neo4j 2.3.0。当我过滤数据时,UMLS 有大约 11M 个节点和 45M 个关系。有 654 种关系类型,并且该列表正在动态增长;这是通用解决方案不依赖于特定列表的入站和出站关系的另一个原因。

最佳答案

如果在 UMLS 中,每个“反向”关系都与相应的“正”关系配对(即,它们链接相同的 2 个节点,但方向相反),那么您可以忽略 Neo4j 中的反向关系DB,因为 neo4j 可以在任一方向导航关系。这能解决您的问题吗?

关于存在双向关系时Neo4j cypher单向查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064437/

相关文章:

rdf - 医学领域的示例本体

Neo4j,密码 : Conditional Create

Neo4j 模式反规范化

java - 软件工程术语的需求本体

rdf - 如何在 RDF 中对长且多语言的个人名进行编码?

merge - 有没有办法使用 Cypher 在 Neo4j 中添加具有属性的多个节点

neo4j - 为什么 MERGE 有时会创建重复关系?

java - Neo4j 索引无法使用 Java API 工作

ruby-on-rails - Neo4j 与 Ruby On Rails

neo4j - 修复时密码查询警告给出不一致的结果