كل ما ينشره المتحف للقرّاء ينشره للآلات أيضًا. فلكل سجلّ — شخصٍ أو مكانٍ أو بناءٍ أو أثرٍ أو حدث — صفحة دائمة على الويب وتوأم بصيغة JSON في عنوان ثابت، والمجموعة كلها تُقدَّم رسمًا واحدًا متّصلًا: سجلات (عُقد) وعلاقات موثّقة بالمصادر بينها (حواف).
لا مفتاح وصول، ولا حساب، ولا تعرفة. البيانات نفسها برخصة CC0 1.0 — ملكٌ عام، لكم تنزيلها وحفظها والبناء عليها. أما المقالات المكتوبة فبرخصة CC BY-SA 4.0 كما في ويكيبيديا. إن استطاع نظامكم فتح عنوان ويب، استطاع قراءة المتحف.
المجموعة الحيّة الآن: 47,718 سجلًّا · 38,862 علاقة موثّقة · 22 صنفًا من السجلات · 1,852 سجلًّا ما يزال جذاذة في طريقه إلى الاكتمال.
ما الذي يجعل هذا مختلفًا
مجموعات كثيرة تحفظ أجزاء من الماضي الإسلامي. وادّعاء المتحف أضيق من ذلك، ونراه بلا نظير في اجتماعه — فلا يُعرف اجتماعٌ مماثل:
رسمٌ واحد، وكل سطحٍ منه
المتحف ليس موقعًا أُلصقت به واجهة برمجة. صورته الأولى رسم معرفة واحد — سجلات بياناتٍ مهيكلة، ومقالات نصوصًا — محفوظ في مستودع git علني. والموقع وهذه الواجهة والبحث والخط الزمني والوحدات المضمّنة وجناح الأطفال كلها تصييرات لذلك الرسم الواحد. صحّحوا واقعة مرة واحدة، فتتصحّح على كل سطح.
المصادر داخل البنية نفسها
في أكثر مجموعات البيانات تسكن الأدلّة الهوامش. هنا تسكن نموذج البيانات نفسه: فالعلاقات تحمل المصادر التي تستند إليها، والملخّصات تحمل استشهاداتها، والنقاط المتنازع عليها تحتفظ بقراءاتها موسومةً لا مسطّحة. فتستطيعون الاستعلام لا عمّا يقوله المتحف فحسب، بل عمّا يستند إليه.
العربية أولًا، وثلاث طبعات في كل شيء
الرسم مكتوب بالعربية أولًا — فالتسميات والملخّصات العربية هي الأصل لا الترجمة — مع طبعتين كاملتين بالإنجليزية والأردية لكل شيء، سجلاتٍ وواجهة. وأكثر مجموعات هذا الميدان إنجليزية مع ترجمات، أو عربية وحدها.
أربعة عشر قرنًا في شبكة واحدة متّصلة
اثنان وعشرون صنفًا — أشخاص وأماكن وأبنية وآثار وكتب ونصوص قرآنية وحديثية ومفاهيم وأحداث ورحلات — تتقاسم رسمًا واحدًا، فيستطيع السؤال أن يسافر من عالمٍ إلى كتاب، إلى مخطوطاته، إلى مدينة، إلى قرن. الموسوعات تقسم هذا كله بالتخصّصات والمجلدات؛ والرسم يعبره كله.
الزمن بياناتٍ، بتقويمين
التواريخ قيم مهيكلة بصيغة EDTF، معيار المكتبات للتواريخ التاريخية، مع السنوات الهجرية إلى جانب الميلادية — فتُحسب الخطوط الزمنية والقرون والمناسبات من البيانات، لا تُكتب صفحةً صفحة.
انفتاح في كل طبقة — وقابلية كاملة لإعادة الإنتاج
البيانات CC0، والنصوص CC BY-SA، والشيفرة MIT: بلا مفتاح، وبلا تتبّع، وبلا خادم يجيب كل زائر — فالموقع ملفات ساكنة، والبيانات الكاملة تنزيلان اثنان. وتستطيع أي مؤسسة أن تعكس المتحف كله، وتتحقق منه استقلالًا، وتبني عليه. لا شيء محجوب لتظلّوا معتمدين على هذا الموقع.
غيرنا أكبر في بُعد واحد: موسوعة أضخم، أو مدونة نصّية واحدة أعمق، أو رسم أوسع بلا نصوص وبلا تحرير. أما الاجتماع — رسمٌ موثّق بالمصادر، عربي البداية، مفتوح الرخصة، للماضي الإسلامي كله، منشورًا متحفًا يقرأه أي أحد ويستعلم منه ويضمّنه ويأخذه — فلا نعلم له وجودًا في مكان آخر.
ثلاثة مداخل: من عمل عصرٍ واحد إلى منصّة
اختاروا العمق الذي يناسب مؤسستكم؛ فكل مستوى يشمل ما فوقه.
المستوى الأول — اربطوه
أضيفوا المتحف إلى فهرسكم وقائمة مصادركم الإلكترونية، واربطوا أي سجلّ مباشرة: عناوين الصفحات دائمة، بالعربية والإنجليزية والأردية. وفريق مجموعات آسيا وأفريقيا في المكتبة البريطانية على تواصل مع المتحف بشأن هذه الخطوة. بلا أي عمل تطويري.
المستوى الثاني — ضمّنوه
أدرجوا قطعة حيّة من المتحف في صفحاتكم بمقتطف HTML واحد: بطاقة معلومة ومسار الأسبوع المُرشِد، بأيٍّ من اللغات الثلاث. المحتوى يتحدّث من جهتنا؛ وصفحتكم تؤطّره فقط.
المستوى الثالث — ابنوا على البيانات
نزّلوا الرسم نفسه — كل سجلّ وكل علاقة موثّقة في ملفات JSON بسيطة — وابنوا فوقه بحثكم ومعارضكم ومواردكم المدرسية وأدواتكم البحثية. رخصة CC0 تجعل النسخة ملكًا لكم تمامًا؛ والمصدر الحيّ يواصل النمو والتصحيح، ولكم إعادة المزامنة متى شئتم.
نقاط الوصول
العنوان الأساس: https://api.islam.museum/api/v1/ — والمسارات نفسها على islam.museum تُحوَّل إليه. طلبات GET عادية عبر HTTPS؛ والردود بصيغة JSON، أو NDJSON (كائن JSON واحد في كل سطر) لملفَّي الرسم، لتُعالج تدفّقيًا. وسياسة CORS مفتوحة (Access-Control-Allow-Origin: *)، فتستطيع المتصفحات نداء الواجهة مباشرة.
| نقطة الوصول | ما تُرجعه |
|---|---|
| https://api.islam.museum/api/v1/meta/index.json | فهرس الواجهة: الإصدار، وأصناف السجلات الاثنان والعشرون، والرخص بصيغة تقرأها الآلة. |
| https://api.islam.museum/api/v1/meta/coverage.json | أعداد حيّة: كم سجلًّا يوجد، وكم في كل صنف. |
| https://api.islam.museum/api/v1/{class}/index.json | كل سجلات صنفٍ واحد في مصفوفة JSON واحدة — مثل جميع الأشخاص وعددهم 10,884. |
| https://api.islam.museum/api/v1/{class}/{slug}.json | سجلّ كامل واحد: التسميات والملخّصات بثلاث لغات، وبياناته المهيكلة، ومصادره، وعلاقاته المحسوبة سلفًا. |
| https://api.islam.museum/api/v1/graph/nodes.ndjson | سجلات الرسم كلها، كائن JSON واحد في كل سطر (49,570 سطرًا). |
| https://api.islam.museum/api/v1/graph/edges.ndjson | كل علاقة بين السجلات، واحدة في كل سطر (38,862) — وكل علاقة تحمل المصادر التي تستند إليها. |
| https://islam.museum/{lang}/embed/fact/ · /{lang}/embed/trail-of-the-week/ | وحدات قابلة للتضمين في صفحاتكم: بطاقة معلومة ومسار الأسبوع، بالعربية أو الإنجليزية أو الأردية. |
| https://doi.org/10.5281/zenodo.23692511 | البيانات مؤرشفة على Zenodo بمعرّف DOI دائم للاستشهاد: 10.5281/zenodo.23692511. |
أمثلة حيّة بنتائج حقيقية
كل ما يلي أرجعته الواجهة الحيّة في نوفمبر 2026، واختصرناه للطول فقط.
ما حجم المجموعة؟
GET https://api.islam.museum/api/v1/meta/coverage.json
{
"entities": 47718,
"stubs": 1852,
"byClass": { "person": 10884, "passage": 10079, "source": 7599,
"building": 5664, "event": 4960, … }
} سجلّ كامل واحد
GET https://api.islam.museum/api/v1/person/ibn-khaldun.json
{
"id": "person/ibn-khaldun",
"class": "person",
"slug": "ibn-khaldun",
"label": { "ar": "ابن خلدون", "en": "Ibn Khaldun" },
"summary": { "ar": "عبد الرحمن بن محمد بن خلدون الحضرمي، مؤلف المقدمة…", … },
"data": { … the full structured record … },
"connections": [ … ],
"license": { … }
} ملفّا الرسم: عُقدة وبعض الحواف
// one line of graph/nodes.ndjson — a record (a node)
{"id":"building/99-domes-mosque","class":"building",
"label":{"ar":"مسجد القباب التسع والتسعون","en":"99 Domes Mosque, Makassar"},
"summary":{"ar":"…","en":"…"},"wings":["objects"],
"regions":["southeast-asia"],"wikidata":"Q116827711","status":"draft"}
// two lines of graph/edges.ndjson — connections (edges), each with its sources
{"from":"person/muhammad-ali-jauhar","to":"person/abadi-bano-begum",
"type":"child_of","inverse":false,
"sources":["source/wikipedia-abadi-bano-begum-en","source/wikipedia-abadi-bano-begum-ur"]}
{"from":"person/a-k-fazlul-huq","to":"place/dhaka","type":"died_in","inverse":false,
"sources":["source/wikipedia-a-k-fazlul-huq-en","source/wikipedia-a-k-fazlul-huq-ar",
"source/wikidata-a-k-fazlul-huq"]} المشي في الرسم (بايثون) — بمن ارتبط محمد علي جوهر؟
Muhammad Ali Jauhar
child_of -> Abadi Bano Begum | sources: 2 الردود مختصرة بعلامة … حيث تتواصل.
المخطّط (Schema)
شكلان يغطّيان كل شيء تقريبًا: العُقدة (سجلّ، في ملفات الرسم وفهارس الأصناف) والحافّة (علاقة). وردّ السجلّ المفرد يضيف بياناته المهيكلة الكاملة وجواره المحسوب سلفًا.
العُقدة — سجلّ واحد
| الحقل | النوع | المعنى |
|---|---|---|
| id | string | معرّف السجلّ الدائم: الصنف/المفتاح. |
| class | string | أحد الأصناف الاثنين والعشرين: شخص، مكان، بناء، أثر، حدث، نصّ، مصدر… |
| label | { ar, en, ur } | اسم السجلّ بالعربية والإنجليزية والأردية، بحسب المتاح. |
| summary | { ar, en, ur } | ملخّص قصير موثّق بالمصادر بثلاث لغات كحدّ أقصى. |
| wings | string[] | أجنحة المتحف التسعة التي ينتمي إليها السجلّ (وقد ينتمي إلى عدّة أجنحة). |
| regions | string[] | المناطق الجغرافية التي ينتمي إليها السجلّ. |
| status | string | published (منشور)، أو draft (مُدخَل وما يزال يُغنى). والجذاذات بلا حالة. |
| wikidata | string (QID) | معرّف ويكي بيانات (QID) للسجلّ حيث وجد — استخدموه لمطابقة السجلات مع فهرسكم. |
| born · died · date | EDTF string | حقول التاريخ حيث تنطبق — born وdied أو تاريخ واحد — بقيم EDTF. |
الحافّة — علاقة واحدة
| الحقل | النوع | المعنى |
|---|---|---|
| from | string (id) | السجلّ الذي تبدأ منه العلاقة (معرّف). |
| to | string (id) | السجلّ الذي تشير إليه (معرّف). |
| type | string | نوع العلاقة — أحد 55 نوعًا (انظروا أدناه). |
| inverse | boolean | هل هذه الحافّة هي القراءة المعكوسة لعلاقة مخزّنة. |
| sources | string[] (ids) | المصادر التي تستند إليها هذه العلاقة — فكل علاقة موثّقة. |
السجلّ المفرد — الشكل الكامل
يحمل ردّ السجلّ المفرد هذه المفاتيح: id، class، slug، label، summary، stub، wings، regions، periods، tags، aliases، themes، span، display، data، prose، degree، contemporaries، updated، connections، related، license. ومفتاح data يحمل المحتوى المهيكل الكامل للسجلّ (التواريخ والأماكن والمهن والمذهب حيث ثبت، وغيرها)؛ وconnections وrelated جواره المحسوب سلفًا في الرسم؛ وdegree عدد علاقاته.
أنواع العلاقات 55 نوعًا. أكثرها ورودًا: part_of (9,845)، mentions (9,504)، participated_in (5,317)، basis_for (3,749)، occurred_at (2,120)، about (1,825)، died_in (750)، member_of (726)، born_in (608)، child_of (570). والتواريخ بصيغة EDTF (صيغة التاريخ والوقت الموسّعة، ISO 8601-2 — معيار المكتبات والأرشيف للتواريخ التاريخية)، مع السنوات الهجرية إلى جانب الميلادية.
شيفرة نموذجية
الأنماط الثلاثة التي تحتاجها أكثر عمليات الدمج. وكلها تعمل على الواجهة الحيّة كما هي مكتوبة.
JavaScript
// Fetch one full record — no key needed, CORS is open.
const res = await fetch("https://api.islam.museum/api/v1/person/ibn-khaldun.json");
const rec = await res.json();
console.log(rec.id); // "person/ibn-khaldun"
console.log(rec.label.en); // "Ibn Khaldun"
console.log(rec.label.ar); // "ابن خلدون"
console.log(rec.summary.en); // short sourced biography (also .ar / .ur) Python
import json, urllib.request
BASE = "https://api.islam.museum/api/v1"
def lines(url):
with urllib.request.urlopen(url) as r:
for raw in r:
if raw.strip():
yield json.loads(raw)
# 49,570 records and 38,862 sourced connections
nodes = {n["id"]: n for n in lines(f"{BASE}/graph/nodes.ndjson")}
edges = list(lines(f"{BASE}/graph/edges.ndjson"))
person = "person/muhammad-ali-jauhar"
print(nodes[person]["label"]["en"]) # Muhammad Ali Jauhar
for e in edges:
if e["from"] == person: # everything he connects to
other = nodes.get(e["to"], {})
name = other.get("label", {}).get("en", e["to"])
print(e["type"], "->", name, "| sources:", len(e["sources"])) HTML — embeds
<!-- "Fact" card, Arabic (use /en/ or /ur/ for the other editions) -->
<iframe src="https://islam.museum/ar/embed/fact/"
width="360" height="220" style="border:0" loading="lazy"
title="islam.museum — fact"></iframe>
<!-- "Trail of the week" — a guided path through connected records -->
<iframe src="https://islam.museum/ar/embed/trail-of-the-week/"
width="360" height="480" style="border:0" loading="lazy"
title="islam.museum — trail of the week"></iframe> Shell — the whole dataset
# The two graph files are the complete museum data (CC0 — keep them, reuse them):
curl -O https://api.islam.museum/api/v1/graph/nodes.ndjson
curl -O https://api.islam.museum/api/v1/graph/edges.ndjson
# Or fetch the archived preservation copy by its DOI:
open "https://doi.org/10.5281/zenodo.23692511" ابدأوا بمساعد ذكاء اصطناعي
سلّموا أحد هذه النصوص إلى مساعد البرمجة لديكم — Claude أو Devin أو Copilot أو غيرها — مع عنوان هذه الصفحة. كل نصّ مكتفٍ بذاته: يسمّي نقاط الوصول والرخصة والنتيجة المطلوبة. والنصوص بالإنجليزية بوصفها نصوص عمل.
Prompt 1 — Add museum widgets to our library portal
You are helping a public library add islam.museum content to its website.
The museum offers two embeddable widgets, no API key needed:
https://islam.museum/ar/embed/fact/ (a daily fact card)
https://islam.museum/ar/embed/trail-of-the-week/ (a guided trail)
Task: create a self-contained HTML page section that embeds both widgets
in iframes (Arabic by default, with a small ar/en/ur switcher that swaps
the iframe language), keeps our existing layout intact on phone, tablet
and desktop, adds no cookies or tracking, and shows a plain link to
https://islam.museum if an iframe fails to load. Data licence: CC0. Prompt 2 — Build catalogue entries from the open data
You are a library systems developer. islam.museum publishes every record
as JSON, no key needed: https://api.islam.museum/api/v1/{class}/{slug}.json for one
record, https://api.islam.museum/api/v1/{class}/index.json for a whole class (22 classes).
Task: write a script that downloads the person index and produces a CSV
for our catalogue with one row per published person: id, label (ar, en,
ur), one-line summary (en), canonical page URL
https://islam.museum/en/person/{slug}/, and the Wikidata QID where the
record has one. Skip records whose status is not "published". Data is
CC0 1.0; add the credit line "Data: islam.museum (CC0)" to the output. Prompt 3 — Answer questions from the graph, with sources
You are a data analyst. Download the museum's graph (CC0, no key):
https://api.islam.museum/api/v1/graph/nodes.ndjson (one record per line)
https://api.islam.museum/api/v1/graph/edges.ndjson (one connection per line; each lists sources)
Task: load both files and answer, as a sourced table: which people are
connected to person/ibn-khaldun, by what type of connection, and which
sources support each connection? Then generalise your code so a librarian
can ask the same question for any record id. Never state a connection the
edges file does not contain; report the source ids with every row. Prompt 4 — A local mirror with search, for our reading rooms
You are a web developer. islam.museum's full dataset is CC0 and published
as two NDJSON files (nodes and edges) at https://api.islam.museum/api/v1/graph/.
Task: build a small static website we can host ourselves that loads a
local copy of nodes.ndjson and offers fast search and filters by class,
region and century, in Arabic and English. Every result links back to the
record's canonical page on islam.museum. The site must work offline once
the data file is downloaded, use no tracking, and credit
"Data: islam.museum (CC0)" in the footer. كم بقي — ولماذا يهمّ المصدر الحيّ
من السجلات المدخلة وعددها 47,718 لا يتجاوز المنشور ربعها تقريبًا (11,907)؛ والباقي مسوّدات ما تزال تُغنى، و1,852 جذاذة تنتظر بناءها الكامل. فالتنزيل اليوم صورةٌ لورشة، لا للرفوف المكتملة.
وفوق ذلك، تسمّي خريطة الفجوات في المتحف المدونات التي لم تُحصد بعد: موسوعة TDV الإسلامية التركية (~16,800 مادة، لم تُستخدم حتى الآن إلا لسجلات مفردة)، وقاموس نادوي في 57 مجلدًا عن النساء المحدّثات (~9,000–10,000 محدّثة، لا يكاد يوجد منهنّ أحد في المتحف بعد)، ومعاجم الرواة الكبرى وراء رسم رواة الحديث، ومتأخّرات موسوعة الإسلام، وجرد المخطوطات والمكتبات التي تحفظها، ومسوح مناطق جنوب شرق آسيا وأفريقيا والصين والأمريكتين التي لم تكاد تبدأ. ثلاث معاجم مسمّاة وحدها تحمل نحو 36,000 مادة إضافية تفوق عدد سجلات المتحف اليوم.
فخذوا البيانات — لهذا وُضعت. لكن ابنوا على المصدر الحيّ حيث تستطيعون: فهو يصحّح الأخطاء كما يبلّغ عنها العلماء، ويضيف آلاف السجلات كل شهر، ويبقي عنوانًا معياريًا واحدًا لكل شيء. النسخة لقطة؛ والمتحف هو الحديقة.
ما ليس موجودًا بعد
بصراحة، ليستقيم تخطيطكم على الحقيقة: لا يوجد بعد مستند OpenAPI/Swagger، ولا نقطة SPARQL، ولا تصدير OAI-PMH أو MARC. والأشكال أعلاه ثابتة ومُصدَّرة (v1 في كل عنوان)، وفهرس meta يعلن الإصدار والرخص. التوثيق الرسمي للواجهة وتصديرات معايير المكتبات على خارطة الطريق.
الرخصة والاستشهاد والتواصل
البيانات: CC0 1.0 — بلا استئذان؛ ويُستحسن سطر عزو مثل «البيانات: islam.museum (CC0)». المقالات: CC BY-SA 4.0 — إعادة استخدام مع العزو. الشيفرة: MIT. وللاستشهاد، معرّف DOI للبيانات هو 10.5281/zenodo.23692511. والمتحف مبادرة شخصية غير تجارية، مقدَّمة مجانًا للمكتبات والمدارس والقرّاء في كل مكان؛ وللأسئلة والتصحيحات والتعاون: discover@islam.museum.