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 在Cypher中,确定连接引用对象的对象的类型(标签)_Neo4j_Cypher - Fatal编程技术网

Neo4j 在Cypher中,确定连接引用对象的对象的类型(标签)

Neo4j 在Cypher中,确定连接引用对象的对象的类型(标签),neo4j,cypher,Neo4j,Cypher,我正在开发一个依赖关系分析工具,我提出了以下Cypher查询,它表示拥有相互引用的对象的模式,从一个模式到另一个模式推断依赖关系,如下所示: MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)-[:REFERENCES*..]->(objectOwnedByTarget)<-[:OWNS]-(targetSchema:SCHEMA) WHERE sourceSchema.name <> targetS

我正在开发一个依赖关系分析工具,我提出了以下Cypher查询,它表示拥有相互引用的对象的模式,从一个模式到另一个模式推断依赖关系,如下所示:

MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)-[:REFERENCES*..]->(objectOwnedByTarget)<-[:OWNS]-(targetSchema:SCHEMA)
WHERE sourceSchema.name <> targetSchema.name
WITH sourceSchema, targetSchema
ORDER BY targetSchema.name
RETURN sourceSchema.name AS schema,
collect(distinct targetSchema.name) AS dependsOn
ORDER BY sourceSchema.name
在一些帮助下,我还创建了一个查询,该查询为我提供了类型(标签)列表及其在图中每个模式的计数:

MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)
RETURN DISTINCT sourceSchema.name AS schema,
filter(x IN (labels(objectOwnedBySource)) WHERE NOT x="ENTITY")[0] AS type,
count(*) AS count 
ORDER BY schema,type
上面的输出类似于:

schema  type      count
FOO     TABLE     14
FOO     SYNONYM   1
BAR     FUNCTION  3
我的问题是:我如何以某种方式组合这一点,并获得导致模式到模式依赖的标签计数?我的意图是:

Schema           DependsOnSchema   ThroughLabelOnReferencedObject   Count
FOO              BAR               TABLE                            101
FOO              BAR               VIEW                             10
FOO              BAZ               TABLE                            6
(etc)
传入和传出引用的单独计数器的奖励点数:-)。提前感谢您的指点

我想到了:

MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)-[:REFERENCES*..]->(objectOwnedByTarget)<-[:OWNS]-(targetSchema)
WHERE sourceSchema <> targetSchema
RETURN DISTINCT sourceSchema.name AS source,
filter(x IN (labels(objectOwnedBySource)) WHERE NOT x="ENTITY")[0] AS sourceType,
targetSchema.name AS target,
filter(x IN (labels(objectOwnedByTarget)) WHERE NOT x="ENTITY")[0] AS targetType,
count(*) AS references
ORDER BY source,sourceType,target,targetType
MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)-[:REFERENCES*..]->(objectOwnedByTarget)<-[:OWNS]-(targetSchema)
WHERE sourceSchema <> targetSchema
RETURN DISTINCT sourceSchema.name AS source,
filter(x IN (labels(objectOwnedBySource)) WHERE NOT x="ENTITY")[0] AS sourceType,
targetSchema.name AS target,
filter(x IN (labels(objectOwnedByTarget)) WHERE NOT x="ENTITY")[0] AS targetType,
count(*) AS references
ORDER BY source,sourceType,target,targetType
source    sourceType    target    targetType    references
FOO       TABLE         BAR       SEQUENCE      3
BAR       FUNCTION      BAZ       PACKAGE       10
(etc)