Day 48 of #100daysofnetworks
Knowledge Graphs, Temporal GraphRAG, and More!
Hello everyone. #100daysofnetworks has become exciting. We have brought the blog back to life, it is more popular than it has ever been, and community support has unlocked some important new things! We all benefit!
Today’s article will be more of an update, with screenshots, and useful links. I’ll point you to things I am talking about and thinking about. We will get back to the HOW in another day. There is too much going on, and it is important to stay organized and thoughtful in order to be effective.
I was thinking about something a few minutes ago: “We can’t always be in hunter-gatherer mode. We have to bring home what we find, we need to choose what to use, and we have to use it. There is no point to only hoarding information. You have to use what you find.”
Hunt / Gather (“What exists?”)
Collect (“How do I begin to use it?” 101 level prototypes, throwaway code)
Understand (“How do I scale this and get accurate answers?”)
Use (Scale it and get accurate answers)
And that statement has been true in my life in various things. You can’t just hoard data. You need to use it to find usefulness, and you need to actually use the insights in order for them to be useful. Hoarding is just expensive.
So, let’s not hoard possibilities. Let’s get organized, and then let’s get effective.
What Have We Learned?
There’s a few things that have me excited right now.
Knowledge Graph: I’m interested in what people are using for knowledge graph creation. I want to understand the KG’s themselves, the relationship types, and how effective different KG architectures are in different AI use cases.
Temporal Knowledge Graph: I am particularly interested in temporal knowledge graphs, as that resonates with how I think about thinking. Our memories fade with time. Recent memories are more vivid than distant memories. A temporal knowledge graph makes a lot more sense to me than a static KG, and I suspect this is important for AI, at least in use-cases where you are dealing with moving data, not just lookups, or where you need memory to fade.
New Excitement: Because I have been bridging the gap between Network Science and Artificial Intelligence lately, this blog has naturally gotten more excitement. I avoided that in the beginning, as I wanted this to be a bit more pure, focused around Network Science and Social Network Analysis at scale, but we’re in the age of intelligence, now. It is important to bridge this gap, quickly. This all relates.
With the new excitement, I’ve been bumping into new people, and learning about new things!
For instance, one person I bumped into on LinkedIn is doing some incredible work. Seriously, look at this: https://github.com/DreamLab-AI/VisionFlow. And look at this as well. I need to learn more about this.
Since 2017, I have wanted graphs in VR. We’re probably not far from that, now. I want to stand inside a graph and explore it interactively to find what I am looking for. It’s neat to see what DreamLab-AI is working on, and I would love to see what others are working on as well.
Back to KGs, here is another useful approach.
Data Science isn’t Lord of the Rings. There is no one technique to rule them all. There are multiple ways to do just about anything. Right now, I am exploring Temporal Knowledge Graphs, because I am building something that has a need for fading memory. This isn’t just for curiosity. I am drawn to GraphRAG, and Temporal GraphRAG feels really promising to me. I need something that works.
What Have We Done?
These articles help me, too, to help me stay organized and remember what we’ve accomplished.
I’ve been exploring Temporal GraphRAG. I’ve been thinking about how to get my inputs to give me that, and then how to get memory to fade. I have a lot to figure out. Figuring out is doing the work.
I’m also interested in GraphRAG and RAG in general. As I said, this is not Lord of the Rings. It’s useful to know where each is useful, and temporal will be more complicated than just RAG, I suspect. I am taking inventory of what approaches are being talked about, what databases can support these approaches, and what those workflows look like. I am thinking of this as an engineer.
What Do We Have, Now?
The community has given this blog rocket fuel. Six readers provided financial support, which I am using to make this blog more useful to all of us. I don’t just write for you. This is useful for me, too. I frequently come back to my articles to remember how to do things.
So, now that we have some financial support for this blog, I bought a Neo4j instance to play with! Special thank you to the readers who have made this possible.
That means, I have a Graph Database to experiment with. I am keeping it small scale for now, to match the level of support, to stay affordable. I specifically want to use Neo4j’s cloud offering, and it is not cheap. If there is more support, I will beef it up and we will do more impressive things with it. The amount of power and use I will get out of various expensive technologies for this blog will directly map the amount of support this blog gets. In other words, if you support this blog, you will learn very powerful and important things.
So, we have:
A Graph Database (Neo4j AuraDB) - Later we can evaluate others
Fresh community excitement and support
Real purpose!
The last one is a big one. People have been reaching out to me about their use-cases. This makes me happy, because I’ve been quietly using and writing about graph analysis for years. It’s nice to see that others are excited! I’m having a lot of neat side conversations, now, and I am so happy about that.
Pretty Pictures
This article is probably going to be really boring if it is just text. Let me show some of what I have been seeing.
First, check out cognee. This is what I used.
This was the very first Knowledge Graph I created using cognee. It was built using one sentence: “Jack and Jill went up to fetch a pail of water. Frank was at the top and blocked the water.”
I was very impressed with the answer I received, based on the Knowledge Graph. This is a screenshot of the inputs and the outputs.
“Jack knows Frank because they both are part of the same story where Jack and Jill went to fetch water. Frank is the character who blocked the water at the top.”
So, then I gave it some real data that I have collected.
And that worked really well, easily. I’ll show how to do this, soon, and after that, we’ll figure out other approaches. What do the sections look like?
Oh neat. Legal cases. What else?
The “person” label, I disagree with. So, now we can see an imperfection in this approach. Tip Number One: It helps to actually look at your graph data before deciding to use it. I think this part could use some work, but maybe I am doing something wrong. This was the first day. It takes time to figure things out.
These aren’t just people. These are incidents or observations, or something else, attached to a person.
“Former FBI Director” → “Charged”
“Driver” → “Crash Salem”
This is part of getting to know the data. If you do not get to know the data, you will be less effective when using it. I especially recommend understanding your inputs, and how they affect your outputs. This came from text data. There are plenty of ways to experiment and iterate, already.
Going back to the first image, it was also neat to read the outputs from cognee.
This is cool. It’s rare to hit a hole in one on your first shot. I do not expect it. This is doing the work. This is how you find what is useful. Then you find more information, experiment, and iterate. Science can follow semver (semantic versioning), so can other things. This is 0.0.0, still a prototype, not ready for anything. No stress, no worry. It is what it is.
What’s Next?
We have a lot of pieces, now. We need to get organized, and then we need to get effective. So, this means a few things. I have a lot to write about, and there’s only one of me, so just bear with me. I will be writing about:
“Zero to Hero” Graph Analysis: You are given a .csv file and have no idea how to even begin with graph analysis. What do you do? I’ll show you a simple high level workflow. The workflow is shown on early posts, but we will revisit, and the post will be a one-shot guide, zero-to-hero. This guide will eventually become a new book, and maybe training.
Scaling graph analysis to million/billion/trillion scale. I’ve done it. You can, too.
I want to start talking to some of these interesting graph/network people I am bumping into on LinkedIn and Bluesky. I don’t know what I’ll do with that, and I’m an introvert, but I’ll figure it out. I’ve done podcasts before, but never with this blog.
RAG audit and inventory: Take stock of what is out there that people are actually using. Maybe I’ll do some community research and outreach, and get the pros and cons from readers and others in my network.
Graph Machine Learning: We need to find more time to play with this. There are models I am really excited to experiment with, and I set up a place to experiment in one of the previous days.
What sounds good to you? What helps you?
Maybe some of you readers would like to get involved and help.
But really, what’s next: I need to be agile for a bit. I’ve suddenly learned a lot, and I need to get organized, then get strategic (make a plan), then get tactical (execute on the plan). So, I’m not sure what I’m going to write about yet, but here are some possibilities:
Getting started with cognee for quick KG prototyping
Louvain vs Graph ML “SCD” Community Detection Cage Match
Million Scale Graph Analysis
Others will take a bit longer:
Neo4j 101: loading an edgelist into Neo4j without headaches
Neo4j 101: whole network analysis
Neo4j 101: egocentric network analysis
Neo4j 101: temporal network analysis
Neo4j 101: graph theory / network science algorithms
Neo4j 101: community detection
In other words…. I have so much to write about, more than I have time to write. That’s not a bad problem. It means we have tapped into something. Let’s go!
Please Support this Blog
This blog has over 700 subscribers. I have written nearly 50 articles. Each article typically involves about four hours of research and development, so that’s about 200 hours of valuable work and writing that I’ve provided for free, because most important is that I want people to learn this. I am not doing this to make money.
However, these days, there are things that I would like to do. We now have a Graph Database to use. If we have more support, we can do bigger and more powerful experiments, and learn from them together. This helps all of us.
So, I have opened up a few ways for you to support this blog:
If you are a subscriber, please consider converting to a paid subscriber. I provide code, data files, and coding explanations that are absolutely worth more than $8 per month. But I understand that not everyone can afford to pay, and that’s fine. Free is absolutely fine, for those who need free.
If you are a paid or unpaid subscriber and you want more flexibility in your contributions, I set up a ko-fi account. CLICK HERE. You can use this to buy me a coffee ($5 donation) or even to pitch in to support the Neo4j Aura instance, which we now have.
And no matter what, if you are here, please buy and read my book. I am working on more book projects, as mentioned on Day 43.
Oh, and please participate in comments. I am a friendly guy. What is on your mind? What graph challenges are you facing? Have any cool ideas you want to brainstorm? Don’t be intimidated, for sure. Be creative instead.








I’m testing out the UX of the Substack App for better following my subscriptions. This came up in my feed, and I’m thrilled to see more. Super curious about the “person” object in that one image. Those appear to be headlines to me. Is that remotely accurate as an assessment?
If so, headlines might trace back to authors. What a wild data set. I am always strained for capacity, but I intend to follow your upcoming tutorials! Network analysis is less canonically represented in any statistics as it is more like physics or calculus or chemistry right? And since data science has some foundational assumptions about statistics being the fundamental calculations resulting in trend analysis, it remains limited as forcing 3D variables into 2D. Apparently no longer a necessary constraint.
Fascinating.
Graph Geeks is amazing graph community, very friendly, you may want to join:
https://discord.gg/rw6XwHWd