Hi  Michael and Gabriel,

Is it possible to make such similar queries using Java API ? or the
graphAlgorithms ?, in the last case I understood that you can only use the
parameters: node and distance.

I would like to find all paths starting in one node, and exclude all paths
that have a node with the property "key".

What I have done is to use the algorithm shortestPath to recover all paths,
and after that by programming, exclude the ones that contain the improper
node, and use the remaining paths.

Thanks,

Milton

On Wednesday, November 19, 2014 12:04:29 AM UTC-2, Michael Hunger wrote:
>
> try this
>
> MATCH (topic:attribute) WHERE id(topic) IN [37, 38]  
>
>> MATCH p = (topic)-[rel: describedBy*0..4]-(node: attribute
>
> where none(n IN nodes(p)[..-1] where n.key = "enrichment" OR n.key = 
>> "classification")
>
> RETURN p;
>
>  
> The problem is I want to remove paths where any of the nodes in the path 
> (other than the end node) have the property "key" with either the value 
> "enrichment" or "classification".
>
> On Tue, Nov 18, 2014 at 6:46 PM, Gabriel Bassett <gabe.the...@gmail.com 
> <javascript:>> wrote:
>
>> I am having trouble creating an appropriate Cypher query. I would like to 
>> return the sub-graph of all edges & nodes within a certain distance of a 
>> topic node. This could easily be done with something like: 
>>>
>>> START (topic: attribute)-[rel: describedBy*0..4]-(node: attribute
>>
>> WHERE id(topic) IN [37, 38] 
>>
>> RETURN rel;
>>
>> The problem is I want to remove paths where any of the nodes in the path 
>> (other than the end node) have the property "key" with either the value 
>> "enrichment" or "classification".
>>
>> I've tried removing paths using:
>>
>>> MATCH path=(topic: attribute)-[rel: 
>>> describedBy|influences*0..4]-(intermediate: attribute)-[rel: 
>>> describedBy|influences*0..4]-(node: attribute)
>>> WHERE id(topic) IN [37,38] AND NOT intermediate in [x IN nodes(path) 
>>> WHERE x.key IN ['enrichment', 'classification'] | x] and length(path) < 5
>>> RETURN rel;
>>
>>
>> I've tried filtering at each potential distance in the path:
>>
>>> MATCH (topic: attribute)-[rel:describedBy|influences]-(node: attribute)
>>> WHERE id(topic) IN [37,38]
>>
>> RETURN rel as rels
>>> UNION
>>> MATCH path=(topic: attribute)-[rel: 
>>> describedBy|influences*1]-(intermediate: attribute)-[rel: 
>>> describedBy|influences*1..3]-(node: attribute)
>>> WHERE id(topic) IN [37,38] AND NOT intermediate.key in ['enrichment', 
>>> 'classification'] and length(path) < 5
>>
>> RETURN rel as rels
>>> UNION
>>> MATCH path=(topic: attribute)-[rel: 
>>> describedBy|influences*2]-(intermediate: attribute)-[rel: 
>>> describedBy|influences*1..2]-(node: attribute)
>>> WHERE id(topic) IN [37,38] AND NOT intermediate.key in ['enrichment', 
>>> 'classification'] and length(path) < 5
>>
>> RETURN rel as rels
>>> UNION
>>> MATCH path=(topic: attribute)-[rel: 
>>> describedBy|influences*3]-(intermediate: attribute)-[rel: 
>>> describedBy|influences*1..1]-(node: attribute)
>>> WHERE id(topic) IN [37,38] AND NOT intermediate.key in ['enrichment', 
>>> 'classification'] and length(path) < 5
>>
>> RETURN rel as rels;
>>
>>
>> I was hoping the 2nd match would stop paths that go 
>> (37)-[rel]-(32)-[rel*0..3]-(), where 32 has 'key':'enrichment', however it 
>> does not.
>>
>> Does anyone have any suggestions how I could formulate a query to stop 
>> following a path when it reaches a node with a specific key:value pair?
>>
>> Thank you for the help.
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Neo4j" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to neo4j+un...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to