فرآیند به روز رسانی شناسه های OCD

معرفی

شناسه های داده مدنی باز (OCD ID) یک فرمت شناسه رایج است که جغرافیای سیاسی را تعریف می کند. برای ایجاد یک فید CDF، باید این شناسه ها را به عنوان بخشی از یک موجودیت GpUnit ارائه کنید. هدف این سند ارائه راهنمایی و بهترین شیوه ها برای افزودن شناسه های OCD به مخزن opencivicdata Github است.

چگونه شناسه های OCD را در مخزن Open Civic Data GitHub به روز کنیم

پیش نیازها

  1. نحوه مشارکت در پروژه منبع باز را بدانید

قبل از اینکه تو شروع کنی:

  1. ایستگاه کاری خود را آماده کنید:

    بسته را از مخزن OCD ID جدا کرده و کلون کنید.

  2. با رپو آشنا شوید:

    در مخزن OCD ID ، هر کشور پشتیبانی شده با یک دایرکتوری و یک فایل CSV نشان داده می‌شود که نام یکسانی دارد: country-<2 حرف کد کشور> (مثال: identifiers/country-de و identifiers/country-de.csv برای آلمان ).

    در داخل فهرست راهنمای کشوری که می‌خواهید تغییر دهید، می‌توانید فایل‌های CSV ( مثال ) را پیدا کنید که شامل بخش‌هایی از فایل CSV سطح بالا و خاص کشور است. اینها فایل هایی هستند که باید آنها را اصلاح کنید.

  3. نحوه ایجاد شناسه های OCD جدید:

    ساختار و منابع

    برای آشنایی با ساختار OCD ID، به سند داده های مدنی باز نگاهی بیندازید. به طور کلی، یک شناسه OCD معتبر به شکل زیر است: ocd-division/country:<country_code>(/<type>:<type_id>)

    اگر ISO در دسترس نباشد، نام‌گذاری شناسه، شناسه‌های استاندارد ISO یا سایر استانداردها مانند FIPS و NUTS را ترجیح می‌دهد.

    سیاست های کلی

    سیاست های کلی زیر است:

    سلسله مراتب

    سلسله مراتب شناسه OCD باید توسط سطح اداری که مرزهای شناسه های OCD را کنترل می کند، دیکته شود، نه لزوماً رابطه مهار شناسه های OCD.

    • مثال: در ایالات متحده، حوزه های کنگره در انتخابات مجلس نمایندگان ملی استفاده می شود، اما مرزهای آنها توسط ایالات تعیین می شود. بنابراین مناطق کنگره از ایالت‌ها دور می‌شوند: ocd-division/country:us/state:pa/cd:2
    • مثال: موریسویل یک شهرداری در پنسیلوانیا است و در شهرستان وست مورلند قرار دارد. با این حال، شهرها توسط ایالت اداره می شوند، بنابراین شناسه OCD از ایالت آویزان است: ocd-division/country:us/state:pa/place:murrysville ممکن است در مواردی که نیاز به ابهام‌زدایی است، از سلسله مراتب اضافی استفاده شود.
    • مثال: 16 مکان در پنسیلوانیا به نام "شهرستان فرانکلین" وجود دارد. به طور معمول، هر کدام دارای شناسه OCD ocd-division/country:us/state:pa/place:franklin هستند، اما این مبهم است. بنابراین، در عوض، می‌توانیم شهرستان را به شناسه OCD اضافه کنیم تا هر کدام شناسه OCD منحصر به فرد خود را داشته باشند. مثال: ocd-division/country:us/state:pa/county:adams/place:franklin
    تایپ کنید
    • انواع شناسه OCD معمولاً مختص کشورها هستند.

    • برخی از شناسه های OCD در سراسر مخزن مانند country ، region و place رایج هستند.

    • با این حال، راهنمایی کلی این است که در تعیین انواع به روشی خاص تر که در زمینه آن کشور منطقی باشد، اشتباه کنیم.

      • مثال: برای Admin Area 1 در ایالات متحده، از انواع state ، district و territory استفاده می شود.
      • مثال: برای Admin Area 1 در CA، از انواع province و territory استفاده می شود.
      • مثال: برای Admin Area 1 در PT، از انواع region و autonomous_region استفاده می شود.
    شناسه
    • به طور کلی، ما می خواهیم از همان OCD ID برای یک منطقه در سراسر منطقه مجدد استفاده کنیم. هنگام انتخاب type_id برای استفاده برای مجموعه جدیدی از شناسه های OCD، یکی را انتخاب کنید که پایدارترین باشد. برخی از سوالاتی که هنگام تعیین شناسه مورد استفاده باید پرسید:
    • چقدر احتمال دارد که شناسه یک منطقه خاص به دلیل تقسیم مجدد تغییر کند؟
    • اگر همان صاحب منصب منطقه X را قبل و بعد از تغییر مرزهای آن از تقسیم مجدد داشته باشد، آیا من دوره آنها را به عنوان مستمر نشان می دهم؟
    • آیا مناطق با مرزها یا نام‌های یکسان در سراسر منطقه مجدد با یک شناسه نشان داده می‌شوند؟
      • مثال: در ایالات متحده، شماره های حوزه کنگره برای مناطق مسکونی ایالات متحده استفاده می شود، زیرا حتی اگر مرزهای آنها با تقسیم مجدد تغییر می کند، هویت به شدت به شماره متصل است و شما می توانید به شخصی به عنوان صاحب منصب برای کرسی N برای X سال اشاره کنید، حتی زمانی که آن تعداد سال از مرزهای تقسیم مجدد عبور می کند.
      • مثال: در کانادا، ما می‌خواهیم از نام ناحیه‌ها برای نشان دادن حوزه‌های انتخاباتی فدرال استفاده کنیم، زیرا اگرچه کدهای انتخاباتی فدرال وجود دارد، اما این شناسه پایدار نیست زیرا مناطق یکسان در سراسر منطقه مجدد با شناسه‌های مختلف نشان داده می‌شوند. (مانند ناحیه 47012 قبل از سال 2012، تقسیم مجدد همان ناحیه بعد از آن نیست).
    تقسیم مجدد

    به طور کلی، هنگام به‌روزرسانی شناسه‌های OCD به دلیل تقسیم مجدد، به جای ایجاد یک مجموعه جدید، از مجموعه شناسه‌های OCD موجود استفاده کنید.

    • اگر هویت ناحیه (شناسه عددی، نام و غیره) پس از تقسیم مجدد تغییر نکرد، از همان شناسه OCD استفاده کنید.
    • برای ایجاد مناطق جدید پس از تقسیم مجدد، شناسه های OCD جدید ایجاد کنید.
    • برای مناطقی که دیگر وجود ندارند، فیلد ValidThrough را با تاریخ اعمال مجدد تقسیم بندی به روز کنید.
    • اگر شناسه ناحیه ای بر اساس نام آن است، و نام منطقه پس از تقسیم مجدد تغییر یافته است، یک شناسه جدید بر اساس نام ناحیه جدید ایجاد کنید و نام مستعار را اضافه کنید که در آن id = oldId و sameAs = newId . این newId را به عنوان استفاده از نقشه های oldId به newId متعارف می کند.
    • در مواردی که بین شناسه های OCD تاریخی تداخل وجود دارد، مثلاً شناسه جدید با شناسه لغو شده یکسان است، سال ValidFrom را به شناسه جدید اضافه کنید. برای اطلاعات بیشتر در مورد این خط مشی نامگذاری، به ایجاد فایلهای جدید برای OCD-IDهای فعلی، لغو شده و تغییر نام یافته مراجعه کنید.

نسخه محلی خود را به روز کنید

هر به‌روزرسانی باید تحت فهرست راهنمای کشور خاص انجام شود: ocd-repository /identifiers/country-<2 حرف کد کشور>. اگر یکی وجود ندارد، آن را ایجاد کنید.

  • اگر فایل CSV شناسه‌های OCD از قبل وجود داشته باشد و محدوده‌های انتخاباتی قدیمی را نشان می‌دهد، باید این فایل را به‌روزرسانی کنید تا حوزه‌های انتخابیه جدید را در بر بگیرد. برای انجام این کار، یک ستون ValidFrom و یک ستون ValidTo اضافه کنید که حاوی تاریخ در قالب YYYY-MM-DD است.
    • ValidFrom باید تاریخ انتخابات برای حوزه های انتخابیه جدید باشد. می توان آن را برای حوزه هایی که از قبل وجود دارند خالی گذاشت.
    • ValidTo برای حوزه های انتخابیه قدیمی باید روز قبل از انتخابات باشد.

به روز رسانی نام مستعار

نام مستعار را می توان برای علامت گذاری شناسه های OCD به عنوان نمایشی از همان قطعه جغرافیای سیاسی استفاده کرد.

  • برای مثال، اگر مکانی هم شهر و هم شهرستان باشد، این می تواند منطقی باشد.

اصول کلی که ما سعی در پیشبرد آن داریم:

  • اگر دو قطعه از جغرافیای سیاسی در کنار هم باشند، لزوماً نباید با یکدیگر همخوانی داشته باشند. به عنوان مثال: کنگره های کل ایالات متحده با ایالت ها همخوانی دارند، اما این به طور تصادفی به دلیل تعداد جمعیت فعلی ایالات متحده است.

نام مستعار همچنین می تواند در جایی که تغییرات قابل توجهی در قوانین / اصلاحات قانون اساسی برای تقسیم ولسوالی ها مورد نیاز است منطقی باشد.

  • به عنوان مثال، مجلس سنای ایالت واشنگتن و مناطق خانه ایالتی طبق قانون اساسی یکسان هستند.

اگر نیاز دارید، یک فایل CSV aliases.csv اضافه کنید که در آن شناسه های OCD قدیمی و نام مستعار آنها را اضافه می کنیم. شناسه‌های متعارف می‌توانند از انواع تقسیم‌بندی استفاده کنند که معنای محلی دارند و می‌توانند مستعارهایی با بازنمایی‌های آشناتر داشته باشند (مانند، متعارف: ocd-division/country:de/land : `ocd-division/country:de/state). برای اطلاعات بیشتر به شماره 170 مراجعه کنید.

برای به روز رسانی فایل aliases.csv:

  • به ترتیب ستون ها در فایل aliases.csv احترام بگذارید: id , sameAs , sameAsNote
تایپ کنید شرح
شناسه این ستون باید دارای نام مستعار شناسه های OCD باشد.
مثل این ستون باید شناسه های OCD واقعی را داشته باشد که نام مستعار را برای آنها اضافه می کنیم.
sameAsNote یادداشتی که توضیح می دهد که چگونه یا چرا تقسیم دارای چندین شناسه است.

مثال: identifiers/country-in/aliases.csv

اسکریپت را اجرا کنید - compile.py

اسکریپت پایتون را در مکان opencivicdata/ocd-division-ids/scripts اجرا کنید:

  • شما باید کد کشور 2 حرفی را به عنوان آرگومان برای اسکریپت مشخص کنید تا بداند شناسه های کدام کشور نیاز به به روز رسانی دارند.
  • مثال: python3 scripts/compile.py in (برای به‌روزرسانی شناسه‌های OCD حوزه‌های انتخابیه در هند).
  • پایتون 2.x پشتیبانی دریافت نمی کند. باید از پایتون 3 یا نسخه های جدیدتر استفاده کنید. می توانید آخرین نسخه پایتون 3 را از اینجا دانلود کنید.

اسکریپت داده ها را از فایل های CSV به روز شده در مرحله قبل (ocd-division-ids/identifiers/country-in/*.csv) می گیرد، مقادیر موجود در فایل ها را اعتبارسنجی می کند، هرگونه خطای داده را بررسی می کند (استفاده از کاراکترهای خاص و غیره). )، یا تکثیر داده ها، و شناسه های OCD جدید را در فایل CSV کشور سطح بالا می نویسد.

در صورت بروز هرگونه مشکل در فایل‌های CSV به‌روزرسانی شده، اسکریپت پیام‌های خطا و هشدار را ارسال می‌کند. مشکلات را حل کنید و اسکریپت را دوباره اجرا کنید.

یک فایل readme اضافه کنید

هنگامی که یک کشور جدید یا سطح جدیدی از پوشش را اضافه می کنید (به عنوان مثال، قبلا فقط یک شناسه OCD برای کشور داشتیم، اما اکنون مناطق اداری سطح اول را اضافه می کنیم)، یک فایل README.md را اضافه یا به روز کنید. این فایل باید شامل یک طرح کلی از جغرافیای سیاسی باشد، از جمله:

  • انواعی که ما از آنها استفاده خواهیم کرد و نقش آنها (مانند " districts سطح اول اداری در این کشور هستند")؛
  • روابط بین انواع (مانند "مناطق قانونی بر اساس هر ناحیه اختصاص داده می شوند و از مرزهای منطقه عبور نمی کنند").
  • هر گونه استثنای قابل توجه (مانند، "یک ناحیه قانونگذاری برای پوشش همه شهروندان خارج از کشور وجود دارد"). و
  • پیوندهایی به هر صفحه مفید ویکی پدیا برای کمک به ارائه زمینه برای یک بازبین یا کاربر.

یک درخواست کشش ایجاد کنید

برای ایجاد یک درخواست کشش، از راهنمایی زیر استفاده کنید:

  • هنگامی که این فرآیند بدون خطا به پایان رسید، فایل جدید نوشته شده در سطح بالای کشور را بررسی کنید.
  • یک درخواست کشش ایجاد کنید. و بازبین اضافه کنید. این درخواست کششی باید شامل تغییرات انجام شده در همه فایل‌های CSV زیر باشد.
  • فایل‌های CSV در فهرست راهنمای کشور خاص. مثال
  • فایل سطح بالای کشور-<2 حرف کد کشور>.csv. مثال
  • هنگامی که درخواست کشش توسط دو نفر از committer های کشور بررسی و تایید می شود ، توسط یکی از صاحبان/همکاران بسته ادغام می شود.