Skip to content

This utility imports SingularityNET meeting data into a Neo4j Aura graph database

License

Notifications You must be signed in to change notification settings

Quality-Assurance-DAO/neo4j

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SingularityNET Meeting Data Graph Database

Python Neo4j Made with Cursor License Maintenance

Overview

A graph-based system for analyzing meeting relationships, participant interactions, and decision flows.

This utility imports SingularityNET meeting data into a Neo4j Aura graph database, creating a queryable graph structure of meetings, participants, documents, action items, and metadata.

Chek out our Wiki for detailed documentation and queries.

Data Model Visualization

Graph Data Model

Figure 1: Graph model showing relationships between Meetings and related entities


Features

  • Meeting Data Import: Converts JSON meeting data into a graph structure
  • Graph Relationships: Creates connections between meetings, people, documents, and tasks
  • Environment Variable Configuration: Securely loads Neo4j credentials from .env
  • Error Handling: Comprehensive error logging for troubleshooting

Prerequisites

Before diving into the analysis, ensure you have the following prerequisites installed and configured:

  • Python 3.8 or later
  • Neo4j Aura database instance
  • Required Python packages:
    pip install neo4j python-dotenv

Setup

  1. Clone and Configure:

    git clone <repository-url>
    cd <repository-directory>
  2. Create .env File:

    NEO4J_URI=neo4j+s://<your-database-uri>
    NEO4J_USERNAME=neo4j
    NEO4J_PASSWORD=<your-password>
  3. Prepare Meeting Data: Place your meeting data in snet-data.json following this structure:

    {
        "meeting_id": [{
            "workgroup": "Governance Workgroup",
            "meetingInfo": {
                "name": "Weekly",
                "date": "2025-01-07",
                "host": "Host Name",
                "documenter": "Documenter Name",
                "peoplePresent": "Person1, Person2, Person3",
                "purpose": "Meeting Purpose",
                "workingDocs": [
                    {"title": "Doc Title", "link": "Doc URL"}
                ]
            },
            "agendaItems": [
                {
                    "status": "carry over",
                    "narrative": "Discussion narrative...",
                    "actionItems": [
                        {
                            "text": "Action Description",
                            "assignee": "Person Name",
                            "dueDate": "2025-01-14",
                            "status": "todo"
                        }
                    ],
                    "decisionItems": [
                        {
                            "decision": "Decision description",
                            "rationale": "Reasoning behind decision",
                            "opposing": "none",
                            "effect": "affectsOnlyThisWorkgroup"
                        }
                    ],
                    "discussionPoints": [
                        "Point 1",
                        "Point 2"
                    ]
                }
            ],
            "tags": {
                "topicsCovered": "Topic1, Topic2, Topic3",
                "emotions": "Productive, Collaborative"
            }
        }]
    }

Usage

Run the importer:

python neo.py

Example Queries

View all relationships:

MATCH (n)-[r]->(m)
RETURN n, r, m

Show meetings and participants:

MATCH (p:Person)-[:ATTENDED]->(m:Meeting)
RETURN m.workgroup, m.date, collect(p.name) as participants

View action items and assignees:

MATCH (m:Meeting)-[:HAS_ACTION]->(a:ActionItem)-[:ASSIGNED_TO]->(p:Person)
RETURN m.date, a.text, p.name, a.status, a.dueDate

View meeting structure:

MATCH (p:Person)-[:ATTENDED]->(m:Meeting)
RETURN m.workgroup, m.date, collect(p.name) as participants

View meeting agenda items and decisions:

MATCH (m:Meeting)-[:HAS_AGENDA_ITEM]->(a:AgendaItem)-[:MADE_DECISION]->(d:Decision)
RETURN m.date, a.status, d.decision, d.rationale

View meeting metadata:

MATCH (m:Meeting)-[:COVERS_TOPIC]->(t:Topic)
RETURN m.date, m.workgroup, collect(t.name) as topics

MATCH (m:Meeting)-[:HAS_EMOTION]->(e:Emotion)
RETURN m.date, m.workgroup, collect(e.name) as emotions

MATCH (m:Meeting)
OPTIONAL MATCH (m)-[:COVERS_TOPIC]->(t:Topic)
OPTIONAL MATCH (m)-[:HAS_EMOTION]->(e:Emotion)
RETURN m.date, m.workgroup, 
       collect(DISTINCT t.name) as topics,
       collect(DISTINCT e.name) as emotions

Files

  • neo.py: Database connection and data import logic
  • snet-data.json: Source meeting data
  • .env: Neo4j credentials (not tracked in git)
  • .gitignore: Git ignore rules

Notes

  • Ensure .env is in .gitignore to protect credentials
  • Meeting data should follow the specified JSON structure
  • Requires active Neo4j Aura instance

License

MIT License


About

This utility imports SingularityNET meeting data into a Neo4j Aura graph database

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages