Option 5 is the recommended best practice for this use case.

On Sunday, August 10, 2014 3:56:04 PM UTC-7, Tan-Minh Truong wrote:
>
> Hello all, just got started on Neo4J and I was wondering if there were 
> best practices with regards to using Labels versus Relationships versus 
> Properties when tagging e.g.
>
> I have a set of friends and family who are interconnected. My challenge is 
> to understand what is the right way to tag nodes to easily see who is 
> Family and who is Friend. I could use Lables to tag nodes or Properties. 
> What I am trying to understand is what would the impact be performance 
> wise, capacity wise (maybe Label access is faster but more limited then 
> Property ones)...and ultimately which one of the options should be taken, 
> based on best practices.
> The first model I created had too many properties so I ended up going 
> beyond the capacity limitations of Neo4J, so mixing Label and Property 
> seems to be the way forward but is there a performance impact or design 
> limitation?
>
>
> Option 1: determined by relationship label
>
>    - I have nodes with a :Person label
>       - Properties are: First Name, Last Name
>       - I record the :Person relationships through edges that feature
>       - :IS_BROTHER_OF, IS_FATHER_OF... for family
>       - :PLAY_CHESS_WITH, :BOXES_WITH, :WENT_TO_UNI_WITH... for friends
>    
> But I box with my little brother, so my node ends up being connected with 
> to his with 2 relationships, one for family, one for friend
>
>
> Option 2: determined by node label
>
>    - I have nodes with a :Person label
>    - I add :Family label
>    - I add :Friend label
>    - I thus use Labels to tag nodes depending on if they are family or 
>    friends
>    - I then add :Chess for all the people I play chess with
>    - I then add :Boxing for all the nodes in my boxing club
>    - ...
>    
> Option 3: determined by relationship property
>
>    - I have nodes with a :Person label
>    - I have relationships with a :IS_CONNECTED_TO label
>       - It has properties such as: Family (Yes/No), Friends (Yes,No), 
>       FamilyType,FriendType
>       - That one would be limited as I would not be able to know if I box 
>       and play chess with my brother
>       
> Option 4: determined by node property
>
>    - I have nodes with a :Person label
>       - I create Property: Family (Yes/No), Friend (Yes/No), boxing 
>       (Yes/No)...
>       
> Option 5: Mix of labels and properties
>
>    - I have nodes with a :Person label
>       - Properties are: First Name, Last Name
>       - I record the :Person relationships through edges that feature
>       - :IS_RELATED_TO for family
>          - With a Property of: RelationshipType (Father, Mother, Son, 
>          Daugther...)
>       - :KNOWS for friends
>          - With a Property of: Through (Chess Club, University, Boxing, 
>          Clubbing...)
>       
> and so on
>
> Any guidelines would be great thanks
>
> Minh
>

-- 
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