This is probably wrong, but can't you just merge a relationship between the
nodes to insure the outgoing relationship is unique?  Maybe I don't fully
understand the use case.


On Fri, Jul 4, 2014 at 4:22 PM, Michael Hunger <
[email protected]> wrote:

> There is no way yet to enforce that at the neo level we plan to add such
> optional constraints later on.
>
> What works in such import situations is to have a set of rules written in
> cypher that check the valid model and return offenders
>
> Then you can use a cypher query to fix your model
>
> Eg by deleting wrong relations and creating the correct ones with their
> data
>
> Much like jqassistant does for source code on top of neo4j
>
>
>
> Sent from mobile device
>
> Am 04.07.2014 um 21:07 schrieb Liliana Ziolek <[email protected]>:
>
> I came across this as a classic PEBKAC issue when importing the data, but
> the resulting exception on SDN was a bit obscure and I ended spending quite
> a bit of time time trying to work out what's wrong. It made me think of a
> better way of handling this issue at the data import step.
>
> What happened was that I was importing data from a CSV file, and with the
> "helpful" Excel autocompletion I ended up with something like:
> Node11,LinkedNodeX
> Node11,LinkedNodeZ
>
> instead of the intended:
> Node11,LinkedNodeX
> Node1,LinkedNodeZ
>
> The result was that rather than having one relationship R between each
> pair, there were 2 relationships R going out of Node11 - which is never
> correct in my domain. Then when I was trying to retrieve a number of nodes
> via SDN I was getting an exception:
> java.lang.IllegalArgumentException: Cannot obtain single field value for
> field 'to'
> at
> org.springframework.data.neo4j.fieldaccess.RelatedToSingleFieldAccessorFactory$RelatedToSingleFieldAccessor.getValue(RelatedToSingleFieldAccessorFactory.java:94)
> at
> org.springframework.data.neo4j.fieldaccess.DefaultEntityState.getValue(DefaultEntityState.java:97)
> [...]
>
> The problem was that despite having a data model in Neo4j and some unique
> constraints on node properties, I managed to mess up my data via cypher on
> the relationship level.
>
> Note it's not a "I don't want 2 relationships of type X between A&B", but
> "If A has outgoing relationship X to B, then it cannot have outgoing
> relationship X going to C". As far as I understand, using MERGE in my
> queries would deal with the former case, but I can't quite figure out how
> to write an update, or place a constraint, that would fail in the latter
> case.
> Obviously if I was inserting the data with SDN this would never have
> happened as I have a correct mapping on the POJO, but is there a way to
> enforce this on the Neo4j level, so that even if I messed up my cypher
> queries I can't affect data integrity?
>
> Thanks
>
> --
> 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 [email protected].
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Alexander Frieden

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to