Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Neo4j中获取每种类型的节点属性和每种类型的关系属性_Neo4j - Fatal编程技术网

在Neo4j中获取每种类型的节点属性和每种类型的关系属性

在Neo4j中获取每种类型的节点属性和每种类型的关系属性,neo4j,Neo4j,我正在使用Neo4j附带的电影示例图,我想得到: 所有标签 所有关系名称 每个标签的所有属性 每个关系类型的所有属性 我可以使用以下方法获得1个所有标签: 我还可以使用以下工具获得2种所有关系类型: 最后,我可以使用以下方法获得所有属性,但不是每个标签或每个关系类型: ResourceIterable<String> allPropertyKeys = GlobalGraphOperations.at(graph).getAllPropertyKeys(); title relea

我正在使用Neo4j附带的电影示例图,我想得到:

  • 所有标签
  • 所有关系名称
  • 每个标签的所有属性
  • 每个关系类型的所有属性
  • 我可以使用以下方法获得1个所有标签:

    我还可以使用以下工具获得2种所有关系类型:

    最后,我可以使用以下方法获得所有属性,但不是每个标签或每个关系类型:

    ResourceIterable<String> allPropertyKeys = GlobalGraphOperations.at(graph).getAllPropertyKeys();
    
    title
    released
    tagline
    name
    born
    roles
    summary
    rating
    
    是否可以使用JavaAPI甚至执行Cypher查询?
    请记住,这是在有数百万个节点的图中完成的。

    在Neo4j中查找所有标签很容易。您已经解决了它,这是一个简单的密码查询:

    match (n) return distinct labels(n)
    
    通过以下查询使用Cypher查找所有关系类型也很容易:

    match (n)-[r]-() return distinct type(r)
    
    但是,对于第三和第四个问题,它变得更难了。实际上,没有经济高效的方法可以获取标签的所有属性或关系类型的所有属性

    关于获取标签的所有属性。这意味着属性属于模式的标签(例如,如果将DDL与RDBMS进行比较)。由于Neo4j基本上是无模式的,因此目前Neo4j中没有内置这种类型的模式支持(撰写本文时,Neo4j的当前版本是2.1.6)。这种类型的结构完整性非常重要

    本文描述了目前可用于Neo4j的唯一模式操作

    目前包括:

    • 唯一-例如,
      在(p:Person)断言p上创建约束。名称是唯一的
    • 索引-在标签上创建索引,例如
      create index on:Person(name)
    如果您需要更多的结构强制,以下内容可能会有所帮助:

    • ,Neo4j之上的一层,除其他外,它强制执行更严格的模式(检查模式文档)
    • ,这是Neo4j之上的一个易于使用的层,它还支持模式。似乎很
    除此之外,该工具还包含许多探查器,其中大多数对数据库运行非常简单的密码查询,并提供摘要统计信息。某些探查器实际上会发现图形中的数据,然后生成其他探查器,稍后将运行这些探查器。例如,如果在数据中发现一个名为“Person”的标签,则会将标签探查器添加到运行队列中,以检查具有该标签的节点的数量

    为了找到“属于标签”的所有属性,您必须遍历该类型的所有节点并提取属性名称(这可能非常昂贵)

    关系类型也是如此。由于它们不是任何模式的一部分,因此查找为特定类型定义的所有属性(您必须遍历所有关系)是一项代价高昂的操作

    ACTED_IN
    DIRECTED
    PRODUCED
    WROTE
    FOLLOWS
    REVIEWED
    
    ResourceIterable<String> allPropertyKeys = GlobalGraphOperations.at(graph).getAllPropertyKeys();
    
    title
    released
    tagline
    name
    born
    roles
    summary
    rating
    
    Movie: [title, released, tagline]
    Person: [name, born]
    ACTED_IN: [roles]
    DIRECTED: []
    PRODUCED: []
    WROTE: []
    FOLLOWS: []
    REVIEWED: [summary, rating]
    
    match (n) return distinct labels(n)
    
    match (n)-[r]-() return distinct type(r)