Git Product home page Git Product logo

Comments (8)

bachmanm avatar bachmanm commented on September 5, 2024

Quick question, why not store the actual information on the Person node itself? Then you're query would look like this: MATCH (p:Person)-[:DATE_OF_BIRTH]->(date) RETURN p.birthDate. The reason this may be better is that you might want to represent that with a different resolution than in the TimeTree (e.g. record date of birth with minute precision but only link to TimeTree with day precision). WDYT?

from neo4j-timetree.

swelham avatar swelham commented on September 5, 2024

That's a very good point about storing a different precision compared to what the node is being linked to. I was actually going to ask the question of storing data on the node vs getting it from links on the neo4j slack. In my case (as far as I can predict), I'm always going to display the dates as a day, month or year so I felt that I was potentially causing a future data consistency issue by having that data represented in two separate places. However I'm pretty new to graph databases, is this a common design practice?

from neo4j-timetree.

bachmanm avatar bachmanm commented on September 5, 2024

The best way to address this (imho) would be the following design: Store the DOB as a long timestamp on the Person node, let TimeTree automatically attach this to the tree (never inconsistent, since it's happening in the same tx), find people using TimeTree, display DOB using the property on the person node, formatted as you wish. That should achieve all you need.

from neo4j-timetree.

MoreThanCarbon avatar MoreThanCarbon commented on September 5, 2024

I also think that it would be helpful if we could YIELD the time along with the node, especially when using the ga.timetree.range procedure. I'm not sure I would want to maintain the date in every event node. The whole reason I want to attach to the timetree is so I can maintain the dates through the graph.

from neo4j-timetree.

swelham avatar swelham commented on September 5, 2024

Sorry for a late reply on this, been rather busy lately to work on my side projects!

In addition to the above requirements I am also now looking into storing dates where there is a lack of historical accuracy. For example sometimes we only know roughly when an event occurred, such as the birth of Caesar is known to be either July 12 or 13 100 BC and so I would need to store two dates for this person. I would see this as just being two separate relationships to the time graph, however it gets more complex when we have time ranges such as 400 BC to 380 BC or cases where we believe something to have happened within a range or a specific date depending on which research is being accounted for, such as 400 BC to 380 BC or circa 350 BC.

I feel like I can correctly model this within the graph in a way that would allow me to craft the types of queries I would need. However I'm unsure on how I could achieve this by storing the date on the event and letting timetree link it all together for me.

from neo4j-timetree.

Joshfindit avatar Joshfindit commented on September 5, 2024

@swelham You may get some benefit from having two interdependent time graphs; one focused on 'watch time' and one focused on what I would call 'human time' (see the definition of kairos in this article: https://daily.jstor.org/what-time-wrinkle-in-time/ )

from neo4j-timetree.

Joshfindit avatar Joshfindit commented on September 5, 2024

@IianNeill, author of The Codex, has some really well-thought-out perspectives on tracking historical events in Neo4j. Highly suggest the conversation with him.

from neo4j-timetree.

swelham avatar swelham commented on September 5, 2024

Thanks for the pointer to Iian and The Codex, it's very similar to my side project. I will definitely reach out to him and see if he has time for a chat at some point.

from neo4j-timetree.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.