انتقل إلى المحتوى
prodid

البيانات المفتوحة

نزّل الفهرس

الفهرس قابل للاستبدال. كل ما يعرفه ويمكن للقارئ أن يعرفه يُنشر تصديرًا كاملًا، أي تفريغًا، يستطيع أي أحد تنزيله وتحميله في فهرس خاص به.

أحدث تفريغ

عند بناء هذا الموقع، كان أحدث تفريغ لقطةً مأخوذة في . يُكتب تفريغ جديد كل ليلة في 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. في داخله خمسة ملفات بيانات وبيان.

dumps.prodid.org
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اسم المصدر.
keykey السجل داخل ذلك المصدر.
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 صاحبَ قرار الدمج المحمَّل.

لقراءة الملفات دون تحميلها، تحقّق من خلاصاتها ثم فك ضغطها. الخلاصات أدناه هي التي في أحدث بيان عند بناء هذا الموقع.

sources.ndjson.gz
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 من المواصفة.

تُنشر المواصفة بالإنجليزية فقط، والنص الإنجليزي هو المرجع المُلزم.

prodid مفتوح المصدر. ساعده على النمو.

ضع نجمة على المستودع ليجده الآخرون، أو أخبرنا بما هو خاطئ، أو أرسل إصلاحًا، أو راسلنا هنا دون حساب على GitHub.