在Neo4j中获取每种类型的节点属性和每种类型的关系属性
我正在使用Neo4j附带的电影示例图,我想得到:在Neo4j中获取每种类型的节点属性和每种类型的关系属性,neo4j,Neo4j,我正在使用Neo4j附带的电影示例图,我想得到: 所有标签 所有关系名称 每个标签的所有属性 每个关系类型的所有属性 我可以使用以下方法获得1个所有标签: 我还可以使用以下工具获得2种所有关系类型: 最后,我可以使用以下方法获得所有属性,但不是每个标签或每个关系类型: ResourceIterable<String> allPropertyKeys = GlobalGraphOperations.at(graph).getAllPropertyKeys(); title relea
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之上的一个易于使用的层,它还支持模式。似乎很
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)