Comments (8)
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.
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.
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.
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.
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.
@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.
@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.
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)
- Feature request: Why can't we add properties to AT_TIME relationship. HOT 4
- SpringData Neo4j 4 + remote database = TimeTree doesn't work? HOT 7
- Mention that a configuration value in neo4j.conf is required HOT 1
- CORS headers HOT 1
- Unable to create time instant of historical dates HOT 3
- "Cannot inherit from final class" error with multiple plugins HOT 3
- Cannot start Neo4j server with TimeTree plugin (windows) HOT 8
- A RequestDispatcher could not be located for the default servlet 'default' HOT 6
- Timestamp for relationships itself HOT 1
- ga.* procedures not visible HOT 1
- Struggling to get a working install of TimeTree HOT 2
- Auto-attach does not attach HOT 6
- ga.timetree.events.range() returns nodes for timeframes where there aren't any nodes attached to the tree HOT 2
- neo4j-timetree does not work with neo4j version 3.2.3 HOT 2
- Neo4j-to-elasticsearch plugin not working when timetree is enabled HOT 3
- could not install neo4j-timetree HOT 4
- Timestamp range not working HOT 1
- ClassNotFound org.joda.time.DateTimeFieldType HOT 1
- Installation Issue with neo4j-community-3.5.14
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neo4j-timetree.