neo4j - Return node if relationship is not present -


i'm trying create query using cypher "find" missing ingredients chef might have, graph set so:

(ingredient_value)-[:is_part_of]->(ingredient) 

(ingredient) have key/value of name="dye colors". (ingredient_value) have key/value of value="red" , "is part of" (ingredient, name="dye colors").

(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient) 

i'm using query ingredients, not actual values, recipe requires, return ingredients chef not have, instead of ingredients each recipe requires. tried

(chef)-[:has_value]->(ingredient_value)<-[:requires_value]-(recipe)-[:requires_ingredient]->(ingredient)<-[:has_ingredient*0..0]-chef 

but returned nothing.

is can accomplished cypher/neo4j or best handled returning ingredients , sorted through them myself?

bonus: there way use cypher match values chef has values recipe requires. far i've returned partial matches returned chef-[:has_value]->ingredient_value<-[:requires_value]-recipe , aggregating results myself.

update 01/10/2013:

came across in neo4j 2.0 reference:

try not use optional relationships. above all,

don’t use them this:

match a-[r?:loves]->() r null make sure don’t exist.

instead so:

match not (a)-[:loves]->() 

using cypher checking if relationship doesn't exist:

... match source-[r?:sometype]-target r null return source 

the ? mark makes relationship optional.

or

in neo4j 2 do:

... optional match source-[r:sometype]-target r null return source 

now can check non-existing (null) relationship.


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -