// Node definitions
CREATE NODE TABLE Surah (
surah_number INTEGER PRIMARY KEY,
name_arabic TEXT,
name_english TEXT,
revelation_place TEXT,
revelation_order INTEGER,
verse_count INTEGER,
description TEXT
);
CREATE NODE TABLE Verse (
verse_key TEXT PRIMARY KEY,
surah_number INTEGER,
verse_number INTEGER,
text_uthmani TEXT,
text_simple TEXT,
juz INTEGER,
hizb INTEGER,
ruku INTEGER,
sajdah BOOLEAN,
embedding VECTOR<FLOAT, 768>,
FOREIGN KEY (surah_number) REFERENCES Surah(surah_number)
);
CREATE NODE TABLE Word (
word_id INTEGER PRIMARY KEY,
verse_key TEXT,
position INTEGER,
text_uthmani TEXT,
text_simple TEXT,
part_of_speech TEXT,
embedding VECTOR<FLOAT, 768>,
FOREIGN KEY (verse_key) REFERENCES Verse(verse_key)
);
CREATE NODE TABLE RootWord (
root_id INTEGER PRIMARY KEY,
text_arabic TEXT,
meaning_english TEXT
);
CREATE NODE TABLE Topic (
topic_id INTEGER PRIMARY KEY,
name TEXT,
description TEXT,
embedding VECTOR<FLOAT, 768>
);
CREATE NODE TABLE Tafsir (
tafsir_id INTEGER PRIMARY KEY,
verse_key TEXT,
author TEXT,
text TEXT,
FOREIGN KEY (verse_key) REFERENCES Verse(verse_key)
);
CREATE NODE TABLE Translation (
translation_id INTEGER PRIMARY KEY,
verse_key TEXT,
language TEXT,
translator TEXT,
text TEXT,
FOREIGN KEY (verse_key) REFERENCES Verse(verse_key)
);
// Relationship definitions
CREATE REL TABLE CONTAINS (
FROM Surah TO Verse,
order_index INTEGER
);
CREATE REL TABLE HAS_WORD (
FROM Verse TO Word,
position INTEGER
);
CREATE REL TABLE HAS_ROOT (
FROM Word TO RootWord
);
CREATE REL TABLE ADDRESSES_TOPIC (
FROM Verse TO Topic,
relevance FLOAT
);
CREATE REL TABLE HAS_TAFSIR (
FROM Verse TO Tafsir,
source TEXT
);
CREATE REL TABLE HAS_TRANSLATION (
FROM Verse TO Translation,
type TEXT
);
CREATE REL TABLE SIMILAR_TO (
FROM Verse TO Verse,
similarity_score FLOAT,
similarity_type TEXT
);
CREATE REL TABLE REFERENCES (
FROM Verse TO Verse,
reference_type TEXT
);