Skip to main content

Basic Queries

This document provides fundamental query examples for retrieving and filtering data from the Quran Knowledge Graph.

1. Retrieve Chapters (Surahs)

Description

Retrieves basic information about chapters (surahs) in the Quran, including their names, revelation place, and verse count.

Query

MATCH (c:Chapter)
RETURN c.id, c.chapter_number, c.name_english, c.name_arabic, 
       c.revelation_place, c.verses_count
ORDER BY c.chapter_number
LIMIT $limit

Parameters

  • limit: Maximum number of chapters to return (e.g., 10)

Expected Results

A table of chapters with their basic information, ordered by chapter number:
idchapter_numbername_englishname_arabicrevelation_placeverses_count
11The OpeningالفاتحةMeccan7
22The CowالبقرةMedinan286

Variations

  • Filter chapters by revelation place: WHERE c.revelation_place = "Meccan"
  • Sort by verses count: ORDER BY c.verses_count DESC
  • Get only chapter names: RETURN c.chapter_number, c.name_english

2. Get Verses from a Chapter

Description

Retrieves verses from a specific chapter, including their text and position information.

Query

MATCH (c:Chapter {id: $chapter_id})-[:CONTAINS]->(v:Verse)
RETURN v.id, v.verse_key, v.verse_number, v.text_uthmani
ORDER BY v.verse_number
LIMIT $limit

Parameters

  • chapter_id: ID of the chapter (e.g., 1 for Al-Fatiha)
  • limit: Maximum number of verses to return (e.g., 20)

Expected Results

A table of verses from the specified chapter:
idverse_keyverse_numbertext_uthmani
11:11بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ
21:22الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ

Variations

  • Include additional verse properties: RETURN v.id, v.verse_key, v.juz_number, v.page_number
  • Filter by verse number range: WHERE v.verse_number BETWEEN 1 AND 10
  • Include translation: OPTIONAL MATCH (v)-[:HAS_TRANSLATION]->(t:Translation) RETURN v.verse_key, v.text_uthmani, t.text

3. Get a Specific Verse by Key

Description

Retrieves detailed information about a specific verse identified by its verse key (chapter:verse format).

Query

MATCH (v:Verse {verse_key: $verse_key})
RETURN v.id, v.verse_key, v.text_uthmani, v.text_indopak

Parameters

  • verse_key: Verse identifier in chapter:verse format (e.g., “2:255” for Ayatul Kursi)

Expected Results

Detailed information about the specified verse:
idverse_keytext_uthmanitext_indopak
2622:255اللَّهُ لَا إِلَٰهَ إِلَّا هُوَ الْحَيُّ الْقَيُّومُ…اللہ لا الہ الا ھو الحی القیوم…

Variations

  • Include additional metadata: RETURN v.verse_key, v.juz_number, v.hizb_number, v.page_number
  • Get verse with translation: MATCH (v:Verse {verse_key: $verse_key})-[:HAS_TRANSLATION]->(t:Translation) RETURN v.text_uthmani, t.text, t.language_name
  • Get verse with tafsir: MATCH (v:Verse {verse_key: $verse_key})-[:HAS_TAFSIR]->(t:Tafsir) RETURN v.text_uthmani, t.text, t.resource_name

4. Get Words in a Verse

Description

Retrieves the individual words in a specific verse, including their position and text.

Query

MATCH (v:Verse {verse_key: $verse_key})-[:CONTAINS_WORD]->(w:Word)
RETURN w.id, w.position, w.text_uthmani
ORDER BY w.position
LIMIT $limit

Parameters

  • verse_key: Verse identifier in chapter:verse format (e.g., “1:1”)
  • limit: Maximum number of words to return (e.g., 30)

Expected Results

A table of words from the specified verse, ordered by position:
idpositiontext_uthmani
11بِسْمِ
22اللَّهِ
33الرَّحْمَٰنِ
44الرَّحِيمِ

Variations

  • Include word morphology: MATCH (w)-[:HAS_ROOT]->(r:Root) RETURN w.text_uthmani, r.text_clean
  • Get words with specific properties: WHERE w.text_uthmani CONTAINS "الله"
  • Include page and line information: RETURN w.text_uthmani, w.page_number, w.line_number

5. Get Topics

Description

Retrieves topics from the knowledge graph, including their names and hierarchical information.

Query

MATCH (t:Topic)
RETURN t.id, t.name, t.arabic_name, t.parent_id, t.depth
ORDER BY t.id
LIMIT $limit

Parameters

  • limit: Maximum number of topics to return (e.g., 20)

Expected Results

A table of topics with their basic information:
idnamearabic_nameparent_iddepth
1Faithالإيمانnull0
2Worshipالعبادةnull0
3Ethicsالأخلاقnull0

Variations

  • Filter by parent topic: WHERE t.parent_id = $parent_id
  • Get only top-level topics: WHERE t.parent_id IS NULL OR t.parent_id = 0
  • Sort by name: ORDER BY t.name

6. Get Translations for a Verse

Description

Retrieves available translations for a specific verse in different languages.

Query

MATCH (v:Verse {verse_key: $verse_key})-[:HAS_TRANSLATION]->(t:Translation)
RETURN t.language_name, t.resource_name, t.text
ORDER BY t.language_name, t.resource_name

Parameters

  • verse_key: Verse identifier in chapter:verse format (e.g., “1:1”)

Expected Results

A table of translations for the specified verse:
language_nameresource_nametext
EnglishSahih InternationalIn the name of Allah, the Entirely Merciful, the Especially Merciful
EnglishYusuf AliIn the name of Allah, Most Gracious, Most Merciful
FrenchMuhammad HamidullahAu nom d’Allah, le Tout Miséricordieux, le Très Miséricordieux

Variations

  • Filter by language: WHERE t.language_name = "English"
  • Filter by translator: WHERE t.resource_name = "Sahih International"
  • Include original text: RETURN v.text_uthmani, t.language_name, t.text

7. Get Adjacent Verses

Description

Retrieves verses that come before and after a specific verse, providing context.

Query

MATCH (v:Verse {verse_key: $verse_key})
MATCH (c:Chapter)-[:CONTAINS]->(v)
MATCH (c)-[:CONTAINS]->(v_context)
WHERE v_context.verse_number >= v.verse_number - $context_size
  AND v_context.verse_number <= v.verse_number + $context_size
RETURN v_context.verse_key, v_context.verse_number, v_context.text_uthmani,
       CASE WHEN v_context.verse_key = $verse_key THEN true ELSE false END AS is_target_verse
ORDER BY v_context.verse_number

Parameters

  • verse_key: Verse identifier in chapter:verse format (e.g., “2:255”)
  • context_size: Number of verses to include before and after (e.g., 2)

Expected Results

A table of verses providing context around the specified verse:
verse_keyverse_numbertext_uthmaniis_target_verse
2:253253تِلْكَ الرُّسُلُ…false
2:254254يَا أَيُّهَا الَّذِينَ آمَنُوا…false
2:255255اللَّهُ لَا إِلَٰهَ إِلَّا هُوَ…true
2:256256لَا إِكْرَاهَ فِي الدِّينِ…false
2:257257اللَّهُ وَلِيُّ الَّذِينَ آمَنُوا…false

Variations

  • Include translations: OPTIONAL MATCH (v_context)-[:HAS_TRANSLATION]->(t:Translation) WHERE t.language_name = "English" RETURN v_context.verse_key, v_context.text_uthmani, t.text
  • Adjust context size dynamically: Use different values for before and after
  • Include chapter information: RETURN c.name_english, v_context.verse_key, v_context.text_uthmani