البيانات المفتوحة
نزّل الفهرس
الفهرس قابل للاستبدال. كل ما يعرفه ويمكن للقارئ أن يعرفه يُنشر تصديرًا كاملًا، أي تفريغًا، يستطيع أي أحد تنزيله وتحميله في فهرس خاص به.
أحدث تفريغ
عند بناء هذا الموقع، كان أحدث تفريغ لقطةً مأخوذة في . يُكتب تفريغ جديد كل ليلة في 04:30 UTC، و latest.jsonيشير دائمًا إلى أحدثها.
- sources.ndjson.gz
2 سطر · 446 B
سطر واحد لكل مصدر.
sha256 0bb6045c5ba3c73d6756f3b5ec2e8910b28f147fd80f6403d542554f8879ba8c
- entities.ndjson.gz
24 سطر · 1.9 KiB
سطر واحد لكل كيان، ومنها المدموجة.
sha256 1333fd9c883d4c4679a2288d874586caae364238233b04163aae8479bf72915c
- records.ndjson.gz
9 سطر · 1.2 KiB
سطر واحد لكل سجل، ومنها المسحوبة.
sha256 cfdfb40fd5cdd941d65adbe559ca491261971ca328316741630d155e179a4600
- groupings.ndjson.gz
15 سطر · 501 B
سطر واحد لكل تجميع.
sha256 5c562f31473d5f2b8f8551caca0f1cbb2d2f3e35f542af1e2ee6e5f35f3f261e
- merges.ndjson.gz
0 سطر · 20 B
سطر واحد لكل دمج، ومنها الملغاة.
sha256 59869db34853933b239f1e2219cf7d431da006aa919635478511fabbfc8849d2
دليل هذا التفريغ هو https://dumps.prodid.org/v1/2026-10-29/، وبيانه هو manifest.json، كُتب في 2026-10-29 04:30 UTC. تراخيصه هي index: CC0-1.0 وclaims: source.
أين توجد التفريغات
التفريغ دليل يحمل اسم تاريخ لقطته بتوقيت UTC، داخل دليل الإصدار الذي يتبعه. يحتوي v1/ على تفريغات v1، وبيانها وأسطر المصادر والكيانات فيها مستندات v1. في داخله خمسة ملفات بيانات وبيان.
https://dumps.prodid.org/v1/<YYYY-MM-DD>/manifest.json
https://dumps.prodid.org/v1/<YYYY-MM-DD>/sources.ndjson.gz
https://dumps.prodid.org/v1/<YYYY-MM-DD>/entities.ndjson.gz
https://dumps.prodid.org/v1/<YYYY-MM-DD>/records.ndjson.gz
https://dumps.prodid.org/v1/<YYYY-MM-DD>/groupings.ndjson.gz
https://dumps.prodid.org/v1/<YYYY-MM-DD>/merges.ndjson.gz
https://dumps.prodid.org/v1/latest.jsonيُكتب latest.json أخيرًا. إنه نسخة من manifest.json لأحدث تفريغ، يُكتب بعد أن يكون كل ملف من ذلك التفريغ وبيانه في مكانه. من يبدأ القراءة منه لا يصادف أبدًا بيانًا يسرد ملفًا غير موجود بعد، ويجد الدليل من snapshot_at في البيان نفسه.
الاحتفاظ. يُحتفظ بالتفريغات اليومية سبعة أيام. ويُحتفظ بأول تفريغ في كل شهر UTC إلى الأبد. التفريغ المحتفظ به لا يُعاد كتابته أبدًا: يبقى دليله وملفاته وبيانه كما هي بايتًا ببايت.
تفريغات v0. تفريغات v0 المكتوبة قبل v1 تبقى تحت https://dumps.prodid.org/v0/ بقواعد الاحتفاظ نفسها، ويظل v0/latest.json يشير إلى آخرها. وستبقى مطابقة لمخطط v0.
البيان. يسرد كل ملف من الملفات الخمسة مرة واحدة، مع SHA-256 وحجمه كما يُقدَّم مضغوطًا، وعدد أسطره بعد فك الضغط. تحقّق من كل ملف بخلاصته قبل تحميله. المخطط هو https://prodid.org/schemas/v1/org.prodid.dump.json، ومتجهات الاختبار في /spec/fixtures/v1/dump.
ما يحتويه كل ملف
كل ملف NDJSON مضغوط بـ gzip، فيه كائن JSON واحد في كل سطر. تُقرأ الملفات الخمسة من لقطة واحدة متسقة، فتتوافق فيما بينها: كل مصدر يذكره أي سطر له سطره في sources.ndjson.gz، وكل opid يذكره أي سطر له سطره في entities.ndjson.gz.
| الملف | سطر واحد لكل | محتوى السطر |
|---|---|---|
| sources.ndjson.gz | مصدر | حالة المصدر، تمامًا كما يعيدها /source/{name}. |
| entities.ndjson.gz | كيان، ومنها المدموجة | مستند الكيان تمامًا كما يعيده /id/{opid}?history=1، بما فيه الادعاءات المسحوبة. |
| records.ndjson.gz | سجل، ومنها المسحوبة | source, key, feed, opid, body, first_seen, last_seen, withdrawn_at. |
| groupings.ndjson.gz | تجميع | source, kind, key, opid. |
| merges.ndjson.gz | دمج، ومنها الملغاة | from, into, decided_at, reverted_at. |
الكيانات المدموجة
الـ opid المدموج يجيب بـ 308 لدى المحلّل، فلا مستند خاصًا به يمكن نسخه. سطره هو المستند الذي كان سيعيده لو لم يُدمج (معرّفاته وادعاءاته تبقى عليه، ولهذا يمكن إلغاء الدمج)، مع عضو واحد إضافي merged_into، وهو opid الكيان الباقي. الدمج لا يتسلسل: الكيان الباقي لا يُدمج هو نفسه أبدًا.
أسطر السجلات
سجل واحد كما يحتفظ به الفهرس. كل الأوقات بتوقيت UTC، بصيغة ISO 8601.
| الحقل | المعنى |
|---|---|
| source | اسم المصدر. |
| key | key السجل داخل ذلك المصدر. |
| feed | عنوان الموجز الذي قُرئ منه. غائب عن السجلات التي كتبها استيراد مجموعة بيانات. |
| opid | العنصر الذي يُحلّ إليه. |
| body | الـ org.prodid.item الذي أرسله الناشر، محفوظًا كما هو. |
| first_seen | متى قرأه الفهرس أول مرة. |
| last_seen | متى قرأه الفهرس آخر مرة. |
| withdrawn_at | موجود فقط إذا سُحب السجل. |
أسطر التجميع
أي كيان حُلّ إليه تجميعٌ من مصدر. kind هو family أو variant، وkey هو ما جُمعت عليه سجلات المصدر، مكتوبًا نصًا صريحًا لا خلاصة، حتى تستطيع تنفيذات أخرى مطابقة تجميعاتها به.
family
{ "group": "<group>" }
لتجميعات الناشر؛ السجل بلا تجميع يشكّل عائلة وحده، ويُكتب { "key": "<key>" }.
variant
{ "family": <key العائلة>, "variant": { <البُعد>: <القيمة>, … } }
متغيّر السجل، أو {} إن لم يوجد.
أسطر الدمج
قرار دمج واحد: from هو الـ opid المدموج، وinto هو الكيان الباقي، وdecided_at وقت اتخاذ القرار، وreverted_at موجود فقط إذا أُلغي الدمج.
ما لا يحتويه التفريغ أبدًا
لا يقول التفريغ أكثر مما يقوله المحلّل أصلًا، إضافةً إلى السجلات والتجميعات والدمج التي تُبنى منها تلك الإجابات.
- عنوان تواصل الناشر، الذي يحفظه الفهرس فقط لإرسال إشعارات الـ lapse.
- سجلات الجلب، ونص أخطاء الزاحف، وأي شيء آخر عن الجلب لا تعرضه حالة المصدر.
- لماذا أُجري دمج، أو من قرره.
- لماذا حُجبت خلاصة وسائط.
- بايتات الوسائط. يشير media_url في ادعاء الوسائط إلى الملف، والخلاصات المحجوبة لا تُقدَّم.
- معرّفات الصفوف الداخلية للفهرس. كل سطر يشير إلى المصادر بأسمائها وإلى الكيانات بـ opid.
- منح authoritative وأدلته. إن كان المصدر authoritative عند snapshot_at فسطره يقول ذلك، لكن الفهرس المحمَّل من تفريغ لا يحمل أي منح حتى يمنحها مشغّله.
التراخيص
قاعدتان، ويذكرهما licenses في البيان كلتيهما.
index: CC0-1.0
كل ما ينتجه الفهرس
opid، وربط المعرّفات، وتسلسل العائلة والمتغيّر، والتجميعات، والدمج.claims: source
كل ادعاء وكل سجل
بالترخيص الذي صرّح به مصدره:
licenseفي سطر ذلك المصدر فيsources.ndjson.gz. المصدر الذي لم يصرّح بترخيص لم يمنح شيئًا، وprodid لا يمنح شيئًا نيابة عنه.
مجموعة البيانات المفتوحة التي لا تنشر مستند اكتشاف خاصًا بها تدخل الفهرس مصدرًا باسم dataset:<slug>، يستوردها مشغّل الفهرس من التصدير العام لمجموعة البيانات. مثل هذا المصدر دائمًا unverified، وlicense الخاص به هو ترخيص مجموعة البيانات نفسها. القواعد في المواصفة.
حمّله في فهرسك الخاص
يحمّل prodid-batch load-dump تفريغ v0 أو v1، في معاملة واحدة، إلى قاعدة بيانات PostgreSQL 18 فارغة مُرحَّلة إلى الإصدار نفسه. يقبل دليل تاريخ التفريغ، أو manifest.json، أو latest.json، محليًا أو عبر HTTPS.
git clone https://github.com/productdevbook/prodid.git && cd prodid
bun install --frozen-lockfile
export DATABASE_URL=postgres://<user>:<password>@<host>:<port>/<database>
bun run --filter '@prodid/db' migrate
PRODID_OPERATOR=<your name> bun apps/batch/src/cli.ts load-dump https://dumps.prodid.org/v1/latest.jsonقبل كتابة أي شيء، يُتحقق من كل ملف مقابل sha256 وbytes وlines في البيان، ويُنزَّل التفريغ البعيد أولًا إلى دليل مؤقت. قاعدة البيانات غير الفارغة تُرفض. يُسجَّل PRODID_OPERATOR صاحبَ قرار الدمج المحمَّل.
لقراءة الملفات دون تحميلها، تحقّق من خلاصاتها ثم فك ضغطها. الخلاصات أدناه هي التي في أحدث بيان عند بناء هذا الموقع.
curl -sO https://dumps.prodid.org/v1/2026-10-29/sources.ndjson.gz
sha256sum sources.ndjson.gz
0bb6045c5ba3c73d6756f3b5ec2e8910b28f147fd80f6403d542554f8879ba8c sources.ndjson.gz
gunzip -c sources.ndjson.gz | head -n 1القواعد الكاملة في قسم Dumps من المواصفة.
تُنشر المواصفة بالإنجليزية فقط، والنص الإنجليزي هو المرجع المُلزم.