برنامج DSPL التعليمي

يشير الاختصار DSPL إلى "لغة النشر لمجموعة البيانات". يمكن استيراد مجموعات البيانات الموضحة في DSPL إلى مستكشف البيانات العامة من Google، وهي أداة تسمح بالاستكشاف المرئي والبصري للبيانات.

ملاحظة: لتحميل البيانات إلى Google Public Data باستخدام أداة تحميل البيانات العامة، يجب أن يكون لديك حساب Google.

يقدّم هذا البرنامج التعليمي مثالاً مفصّلاً عن كيفية إعداد مجموعة بيانات DSPL أساسية.

مجموعة بيانات DSPL هي حزمة تحتوي على ملف XML ومجموعة من ملفات CSV. ملفات CSV عبارة عن جداول بسيطة تحتوي على بيانات مجموعة البيانات. يصف ملف XML البيانات الوصفية لمجموعة البيانات، بما في ذلك البيانات الوصفية الإعلامية مثل أوصاف المقاييس، بالإضافة إلى البيانات الوصفية الهيكلية مثل المراجع بين الجداول. وتسمح البيانات الوصفية للمستخدمين غير الخبراء باستكشاف بياناتك وتمثيلها بيانيًا.

المطلب الأساسي الوحيد لفهم هذا البرنامج التعليمي هو مستوى جيد من فهم XML. فهم مفاهيم قاعدة البيانات البسيطة (على سبيل المثال، أو المفاتيح الأساسية) ولكن هذا ليس إلزاميًا. يمكنك أيضًا الاطّلاع على ملف XML المكتمل وحزمة مجموعة البيانات الكاملة المرتبطة بهذا البرنامج التعليمي.

نظرة عامة

قبل البدء في إنشاء مجموعة البيانات، في ما يلي نظرة عامة عالية المستوى على ما تحتوي عليه مجموعة بيانات DSPL:

  • معلومات عامة: حول مجموعة البيانات
  • المفاهيم: تعريف "الأشياء" التي تظهر في مجموعة البيانات (مثل البلدان ومعدل البطالة والجنس وما إلى ذلك)
  • الشرائح: مجموعات من المفاهيم تتوفّر بيانات لها
  • الجداول: بيانات للمفاهيم والشرائح. تحتوي جداول المفاهيم على التعدادات وتحتوي جداول الشرائح على البيانات الإحصائية
  • المواضيع: تُستخدم لتنظيم مفاهيم مجموعة البيانات في عرض هرمي ذي معنى من خلال التصنيف

لتوضيح هذه المفاهيم المجرّدة إلى حد ما، فكّر في استخدام مجموعة البيانات (مع بيانات وهمية) المستخدمة في هذا البرنامج التعليمي: السلسلة الزمنية الإحصائية للسكان والبطالة، مجمّعة حسب مجموعات متنوعة من البلدان، والولايات المتحدة، والجنس.

يحدد نموذج مجموعة البيانات هذا المفاهيم التالية:

  • بلد
  • الجنس
  • جمهور
  • ولاية
  • نسبة البطالة
  • سنة

والمفاهيم الفئوية، مثل الولاية، مرتبطة بجداول المفاهيم، التي تعرض كل قيمها المحتملة (كاليفورنيا، أريزونا، وغيرها). وقد تتضمّن المفاهيم أعمدة إضافية للخصائص، مثل اسم الولاية أو بلدها.

الشرائح تحدد كل مجموعة من المفاهيم التي تتوفر لها بيانات إحصائية في مجموعة البيانات. تحتوي الشريحة على الأبعاد والمقاييس. في الصورة أعلاه، تظهر الأبعاد باللون الأزرق والمقاييس المعروضة باللون البرتقالي. في هذا المثال، تتضمن الشريحة gender_country_slice بيانات للمقياس population والأبعاد country وyear وgender. وتقدّم شريحة أخرى، يُطلق عليها اسم country_slice، إجمالي عدد السكان سنويًا (المقياس) للبلدان.

إضافةً إلى المكوّنات والمقاييس، تشير الشرائح أيضًا إلى الجداول التي تحتوي على البيانات الفعلية.

لنستعرض الآن خطوة بخطوة كيفية إنشاء مجموعة البيانات هذه في DSPL.

معلومات مجموعة البيانات

للبدء، نحتاج إلى إنشاء ملف XML لمجموعة البيانات. في ما يلي بداية وصف DSPL لمثال مجموعة البيانات:

<?xml version="1.0" encoding="UTF-8"?>
<dspl targetNamespace="http://www.stats-bureau.com/mystats"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://schemas.google.com/dspl/2010"
   xmlns:time="http://www.google.com/publicdata/dataset/google/time"
   xmlns:geo="http://www.google.com/publicdata/dataset/google/geo"
   xmlns:entity="http://www.google.com/publicdata/dataset/google/entity"
   xmlns:quantity="http://www.google.com/publicdata/dataset/google/quantity">

  <import namespace="http://www.google.com/publicdata/dataset/google/time"/>
  <import namespace="http://www.google.com/publicdata/dataset/google/entity"/>
  <import namespace="http://www.google.com/publicdata/dataset/google/geo"/>
  <import namespace="http://www.google.com/publicdata/dataset/google/quantity"/>

  <info>
    <name>
      <value>My statistics</value>
    </name>
    <description>
      <value>Some very interesting statistics about countries</value>
    </description>
    <url>
      <value>http://www.stats-bureau.com/mystats/info.html</value>
    </url>
    </info>

  <provider>
    <name>
      <value>Bureau of Statistics</value>
    </name>
    <url>
      <value>http://www.stats-bureau.com</value>
    </url>
  </provider>
 ...
</dspl>

يبدأ وصف مجموعة البيانات بعنصر <dspl> عالي المستوى. تحتوي السمة targetNamespace على معرّف موارد منتظم (URI) يعرّف مجموعة البيانات هذه بشكل فريد. تكون مساحة اسم مجموعة البيانات مهمة بشكل خاص عند نشر مجموعة البيانات، حيث ستكون المعرّف العالمي لمجموعة البيانات والوسيلة للآخرين للرجوع إليها.

ملاحظة: قد يتم حذف السمة targetNamespace. وفي هذه الحالة، يتم إنشاء مساحة اسم فريدة تلقائيًا عند استيراد مجموعة البيانات.

استخدام معلومات من مجموعات بيانات أخرى

يمكن لمجموعات البيانات إعادة استخدام التعريفات والبيانات من مجموعات البيانات الأخرى عن طريق استيراد مجموعات البيانات هذه. يحدّد كل عنصر <import> مساحة الاسم لمجموعة بيانات أخرى ستشير إليها مجموعة البيانات هذه.

في نموذج مجموعة البيانات، سنحتاج إلى بعض التعريفات من http://www.google.com/publicdata/dataset/google/quantity (مجموعة بيانات تنشئها Google وتحتوي على مفاهيم مفيدة لتحديد الكميات الرقمية)، ومن مجموعات البيانات time وentity وgeo التي توفّر تعريفات ذات صلة بالوقت والكيانات والموقع الجغرافي، على التوالي.

يقدم العنصر <dspl> الأعلى تصريحًا لبادئة مساحة الاسم (على سبيل المثال، xmlns:time="http://...") لكل مجموعة بيانات مستوردة. يجب تقديم تعريفات البادئة للإشارة إلى العناصر من مجموعات البيانات الأخرى بطريقة موجزة. على سبيل المثال، يشير time:year إلى تعريف year في مجموعة البيانات التي تم استيرادها والتي ترتبط مساحة اسمها بالبادئة time.

مجموعة البيانات ومعلومات الموفر

ويحتوي العنصر <info> على معلومات عامة عن مجموعة البيانات، وهي الاسم والوصف وعنوان URL حيث يمكن العثور على مزيد من المعلومات.

يحتوي العنصر <provider> على معلومات عن موفّر مجموعة البيانات، وهي: اسمها وعنوان URL حيث يمكن العثور على مزيد من المعلومات (بشكل عام، الصفحة الرئيسية لمزوّد البيانات).

تعريف المفاهيم

بعد أن قدّمنا بعض المعلومات العامة حول مجموعة البيانات، نحن جاهزون للبدء في تحديد محتواها. وهدفنا التالي هو إضافة إحصاءات السكان في البلدان خلال آخر 50 عامًا.

أول ما نحتاج إليه هو تقديم بعض التعريفات لمفاهيم السكان والبلد والسنة. وفي DSPL، يُطلق على هذه التعريفات المفاهيم.

المفهوم هو تعريف لنوع البيانات الذي يظهر في مجموعة بيانات. وتُسمى قيم البيانات التي تتوافق مع مفهوم معيّن بمثيلات ذلك المفهوم.

المجتمع الإحصائي

لنبدأ بتعريف مفهوم السكان. في مستند DSPL، يتم تحديد المفاهيم في عنصر <concepts> الذي يأتي مباشرةً بعد معلومات مجموعة البيانات والمزوّد.

في ما يلي مفهوم لعدد السكان يتضمّن فقط الحد الأدنى من المعلومات المطلوبة لأي مفهوم: id (معرّف فريد) وname وtype.

<dspl ...>
  ...
  <concepts>
    <concept id="population">
      <info>
        <name>
          <value>Population</value>
        </name>
      </info>
      <type ref="integer"/>
    </concept>
  ...
  </concepts>

في ما يلي توضيح لآلية عمل هذا النموذج:

  • ويجب أن توفّر كل مفهوم السمة id التي تحدّد المفهوم ضمن مجموعة البيانات بشكل فريد. هذا يعني أنه لا يمكن أن يكون لمفهومَين محدّدَين في مجموعة البيانات نفسها المعرّف نفسه.
  • على غرار مجموعة البيانات ومزوّد البيانات، توفّر عناصر <info> معلومات نصية حول المفهوم، مثل اسمه ووصفه.
  • يحدّد العنصر <type> نوع البيانات في مثيلات المفهوم (بمعنى آخر، "القيم"). في هذا المثال، النوع population هو integer. يتوافق بروتوكول DSPL مع أنواع البيانات التالية:
    • string
    • integer
    • float
    • boolean
    • date

البلد

لنكتب الآن مفهوم البلد:

<concept id="country">
  <info>
    <name><value>Country</value></name>
    <description>
      <value>My list of countries.</value>
    </description>
  </info>
  <type ref="string"/>
  <property id="name">
    <info>
      <name><value>Name</value></name>
      <description>
        <value>The official name of the country</value>
      </description>
    </info>
    <type ref="string" />
  </property>
  <table ref="countries_table" />
</concept>

يبدأ تعريف مفهوم البلد على النحو التعريف السابق، مع id وinfo وtype.

قيم المفهوم

ويتم سرد جميع الحالات المحتملة المحتملة للمفاهيم الفئوية، مثل البلدان. بعبارة أخرى، يمكنك إدراج جميع البلدان المحتملة التي يمكن الإشارة إليها. ولكن لإجراء ذلك، يحتاج كل بلد إلى معرّف فريد. يستخدم هذا المثال رموز البلدان بتنسيق ISO لتحديد البلدان، وتكون هذه الرموز من النوع string.

في هذا المثال، لن تحتاج إلى استخدام رمز ISO، بل يمكنك أيضًا استخدام اسم البلد. ومع ذلك، تختلف الأسماء حسب اللغة، ويمكن أن تتغير مع مرور الوقت، ولا يتم استخدامها بشكل متّسق في جميع مجموعات البيانات. وبالنسبة إلى البلدان، وللمفاهيم الفئوية بشكل عام، من الممارسات الجيدة اختيار معرّفات قصيرة ومستقرة وشائعة الاستخدام ومستقلة عن اللغات (إن وجدت).

خصائص المفهوم

بالإضافة إلى id، يتضمّن مفهوم البلد عنصر <property> يحدّد اسم البلد. وبعبارة أخرى، اسم البلد ("أيرلندا") هو خاصية بالبلد الذي يستخدم id IE. الخصائص هي الطريقة التي يقدم بها DSPL معلومات منظَّمة إضافية عن مثيلات المفهوم.

تمامًا مثل المفهوم نفسه، تحتوي الخصائص على id وinfo وtype.

بيانات المفهوم

وأخيرًا، يحتوي مفهوم البلد على عنصر <table>. يشير هذا العنصر إلى جدول يسرد قائمة بجميع البلدان.

قد يكون استخدام الجداول مفيدًا بالنسبة إلى بعض المفاهيم، وليس البعض الآخر. على سبيل المثال، ليس من المنطقي حساب جميع القيم المحتملة لمفهوم المحتوى. ومع ذلك، إذا كنت تشير إلى جدول لمفهوم محدّد، يجب أن يحتوي هذا الجدول على جميع نُسخه، على سبيل المثال، يجب أن يدرج جدولاً لكل بلد وليس فقط بعض الأمثلة.

تحدّد مجموعة البيانات جدول countries_table على النحو التالي:

...
<tables>
  <table id="countries_table">
    <column id="country" type="string"/>
    <column id="name" type="string"/>
    <data>
      <file format="csv" encoding="utf-8">countries.csv</file>
    </data>
  </table>
  ...
</tables>

يحدد جدول البلدان أعمدة الجدول وأنواعه، ويشير إلى ملف CSV يحتوي على البيانات. ويمكن حزم ملف CSV هذا وتحميله باستخدام XML لمجموعة البيانات أو الوصول إليه عن بُعد عبر HTTP أو HTTPS أو FTP. وفي الحالات الأخيرة، ستستبدل countries.csv بعنوان URL، مثل http://www.myserver.com/mydata/countries.csv.

وحيثما تم تخزينه، يظهر ملف CSV على النحو التالي:

country, name
AD,      Andorra
AF,      Afghanistan
AI,      Anguilla
AL,      Albania
US,      United States

يسرد الصف الأول من الجدول أرقام تعريف الأعمدة، كما هو محدّد في تعريف table DSPL. ويتطابق كل صف من الصفوف التالية مع مثيل واحد لمفهوم البلد. إذا كان المفهوم يحتوي على جدول، يجب أن يحتوي الجدول على كل مثيلات المفهوم، وفي هذه الحالة، يجب أن يضم قائمة بجميع البلدان.

يتم ربط الأعمدة بمفهوم البلد وخصائصه استنادًا إلى رقم تعريفه. يتطابق رقم تعريف العمود الأول، country، مع رقم تعريف المفهوم. هذا يعني أنّ هذا العمود يتضمّن معرّف البلد الفريد الذي يحدّده مفهوم البلد. ويتطابق العمود التالي مع السمة name لمفهوم البلد. تتطابق القيم في هذا العمود مع قيم السمة name.

هناك بعض المتطلبات لبيانات CSV لجدول المفاهيم:

  • يجب أن تتطابق عناوين الأعمدة في السطر الأول من ملف البيانات تمامًا مع المفهوم id وسمة id المفهوم الذي ترتبط به البيانات (على الرغم من أن الترتيب قد يختلف).
  • يجب أن يحتوي كل صف على عدد العناصر نفسه كعدد الخصائص على المفهوم (حتى إذا كانت القيمة فارغة).
  • يجب أن تكون كل قيمة للحقل id للمفهوم (هنا، رمز البلد) فريدة وغير فارغة (الحقل الفارغ هو حقل لا يحتوي على أحرف أو يتضمّن مسافات بيضاء فقط).
  • يجب أن تكون قيم الخصائص التي تشير إلى مفاهيم أخرى فارغة أو قيمة صالحة للمفهوم المشار إليه.
  • يجب أن تكون القيم التي تحتوي على فاصلات أو علامات اقتباس مزدوجة أو أحرف سطر جديد مضمّنة بالكامل بين علامات اقتباس مزدوجة.
  • يجب أن تسبق أي علامات اقتباس مزدوجة حرفية داخل قيمة مباشرةً علامة اقتباس مزدوجة أخرى.

سنة

إنّ المفهوم الأخير الذي نحتاج إليه بشأن بيانات سكان البلد هو مفهوم يمثل السنوات. وبدلاً من تحديد مفهوم جديد، سنستخدم مفهوم العام من إحدى مجموعات البيانات التي تم استيرادها: "http://www.google.com/publicdata/dataset/google/time". لإجراء ذلك، يجب الإشارة إليه على أنه time:year، حيث تمثل time مجموعة البيانات المشار إليها ويحدّد year المفهوم.

المفاهيم الأساسية

time:year هي جزء من مجموعة صغيرة من المفاهيم الأساسية التي تم تحديدها من قِبل Google. تقدّم المفاهيم الأساسية تعريفات أساسية للوقت والموقع الجغرافي والكميات الرقمية والوحدات، وما إلى ذلك.

في الواقع، يتوفّر مفهوم البلد المحدّد أعلاه كمفهوم أساسي. لقد أنشأناه فقط لأغراض التوضيح. وعند الإمكان، عليك استخدام المفاهيم الأساسية في مجموعات البيانات، إما مباشرةً أو من خلال توسيعها (مزيد من المعلومات حول الإضافة أدناه). تعمل المفاهيم الأساسية على جعل بياناتك قابلة للمقارنة بمجموعات البيانات الأخرى، وتفعيل ميزات مجموعات البيانات في مستكشف البيانات العامة. على سبيل المثال، يعتمد تحريك البيانات بمرور الوقت أو عرض البيانات الجغرافية على خريطة على استخدام المفهوم الأساسي time وgeo على التوالي.

الشريحة الأولى

بعد أن أصبح لدينا الآن المفاهيم المتعلقة بالسكان والبلد والسنة، حان الوقت لتجميعها.

ولهذا السبب، نحتاج إلى إنشاء شريحة تجمع بينهما. في DSPL، تمثل الشريحة مزيجًا من المفاهيم التي تتوفّر لها بيانات.

لماذا لا تنشئ جدولاً يحتوي على الأعمدة الصحيحة؟ لأن الشرائح تلتقط معلومات مجموعة البيانات من حيث مفاهيمها. وسيصبح هذا الأمر أكثر وضوحًا عند إنشاء المزيد من مجموعات البيانات.

تظهر الشرائح في ملف DSPL ضمن عنصر <slices>، والذي يجب أن يظهر بعد القسم concepts مباشرةً.

<slices>
  <slice id="countries_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="countries_slice_table"/>
  </slice>
</slices>

تمامًا مثل المفاهيم، يكون لكل شريحة id (countries_slice) تحدّد الشريحة داخل مجموعة البيانات بشكل فريد.

تحتوي الشريحة على نوعين من مراجع المفاهيم: الأبعاد والمقاييس. تختلف قيم المقاييس باختلاف قيم الأبعاد. تختلف قيمة population (المقياس) هنا حسب البُعدين country وyear.

على غرار المفاهيم، تتضمن الشرائح مرجعًا إلى جدول يحتوي على بيانات الشريحة. يجب أن يحتوي الجدول المرجعي على عمود واحد لكل بُعد ومقياس من الشريحة. تمامًا كما هو الحال مع المفاهيم، يتم ربط أبعاد ومقاييس الشريحة بأعمدة الجدول التي لها المعرّفات نفسها.

جدول الشرائح

يظهر جدول الشريحة السكانية في القسم tables من ملف DSPL:

<tables>
  ...
  <table id="countries_slice_table">
    <column id="country" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <data>
      <file format="csv" encoding="utf-8">country_slice.csv</file>
    </data>
  </table>
  ...
</tables>

ملاحظة: يتضمّن العمود year سمة format التي تحدّد كيفية تنسيق السنوات. تنسيقات التاريخ المدعومة هي تلك المحددة بواسطة تنسيق Joda DateTime.

يحدّد الجدول countries_slice أعمدة الجدول وأنواعه، ويشير إلى ملف CSV يحتوي على البيانات. يظهر ملف CSV على النحو التالي:

country, year,  population
AF,      1960,  9616353
AF,      1961,  9799379
AF,      1962,  9989846
AF,      1963,  10188299
...

يحتوي كل صف من جدول البيانات على تركيبة فريدة من الأبعاد country وyear، بالإضافة إلى القيمة المقابلة لمقياس population (على سبيل المثال، عدد السكان - المقياس - لأفغانستان في عام 1960 - الأبعاد).

وتجدر الإشارة إلى أن القيم في العمود country تتطابق مع قيمة/معرّف مفهوم country، وهو رمز ISO 3166 المكوَّن من حرفين للبلد.

يجب أن تستوفي بيانات ملف CSV لإحدى الشرائح القيود التالية:

  • يجب ألا تكون كل قيمة لحقل سمة (مثل country وyear) فارغة. ويمكن أن تكون قيم حقول المقاييس (مثل population) فارغة. ويتم تمثيل القيمة الفارغة بقيمة بدون أحرف.
  • يجب أن تكون كل قيمة لحقل سمة تشير إلى مفهوم موجودة في بيانات هذا المفهوم. على سبيل المثال، يجب عرض القيمة AF في جدول بيانات مفهوم country.
  • ويمكن أن تحدث كل مجموعة فريدة من قيم السمات، مثل AF, 2000، مرة واحدة فقط.
  • ويجب ترتيب البيانات حسب أعمدة المكوّنات التي لا تمثل وقتًا (بأي ترتيب)، ثم بعد ذلك، حسب أي أعمدة أخرى. على سبيل المثال، في جدول يحتوي على الأعمدة [date, dimension1, dimension2, metric1, metric2]، يمكنك الترتيب حسب dimension1، ثم dimension2، ثم date، ولكن ليس حسب date ثم المكوّنات.

ملخّص

في هذه المرحلة، تتوفّر لدينا بيانات كافية في DSPL لوصف بيانات السكان في البلد. باختصار، كان علينا:

  • إنشاء عنوان DSPL ووصف مجموعة البيانات وموفرها
  • أنشئ مفهومًا للسكان ومفهومًا آخر للبلد، باستخدام ملف CSV يضم جميع البلدان وأسمائها.
  • يمكنك إنشاء شريحة تحتوي على أعداد السكان للبلدان بمرور الوقت، مع الإشارة إلى مفهوم العام المحدّد مسبقًا في مجموعة البيانات الزمنية التي تم استيرادها من Google.

في الجزء المتبقي من هذا البرنامج التعليمي، سنجعل مجموعة البيانات أكثر ثراءً من خلال إضافة المزيد من السمات في المزيد من الشرائح، بالإضافة إلى المزيد من المقاييس المجمّعة حسب الموضوع.

إضافة مكوّن: الولايات المتحدة

لنثري مجموعة البيانات الآن من خلال إضافة بيانات السكان للولايات في الولايات المتحدة. نحتاج أولاً إلى تعريف مفهوم الولايات. يشبه هذا كثيرًا مفهوم البلد الذي حدّدناه من قبل.

<concept id="state" extends="geo:location">
  <info>
    <name>
      <value>state</value>
    </name>
    <description>
      <value>US states, identified by their two-letter code.</value>
    </description>
  </info>
  <property concept="country" isParent="true" />
  <table ref="states_table"/>
</concept>

إضافات المفاهيم ومراجع المواقع

يقدم مفهوم الدولة عدة ميزات جديدة من DSPL.

أولاً، تتوسّع الولاية مفهومًا آخر، وهو geo:location (المحدّد في مجموعة البيانات الجغرافية الخارجية التي تم استيرادها في بداية مجموعة البيانات). ويعني المعنى الدلالي أنّ السمة state هي نوع من السمة geo:location. ونتيجة لذلك، يكتسب جميع سمات وسمات geo:location. على وجه التحديد، تحدّد السمة الموقع الجغرافي للسمتَين latitude وlongitude. ومن خلال توسيع نطاق المفهوم السابق، يتم تطبيق هذه الخصائص على الحالة أيضًا. بالإضافة إلى ذلك، بما أنّ الموقع الجغرافي موروث من entity:entity، تحصل الولاية أيضًا على جميع خصائص الموقع الإلكتروني الأخير، بما في ذلك name وdescription وinfo_url.

ملاحظة: من المفترض أن يكون مفهوم البلد الذي تم تحديده سابقًا يشمل أيضًا المفهوم geo:location. تم حذف هذه النقطة سابقًا لبساطتها، وقد أدرجنا الموقع الجغرافي في توريث البلد، في ملف XML النهائي.

ملاحظة: يمكنك استخدام تركيبة extends في مجموعات البيانات الخاصة بك لإعادة استخدام المعلومات المحدّدة في مجموعات بيانات أخرى. يتطلّب استخدام السمة extends أن تكون جميع مثيلات المفهوم صالحة للمفهوم الذي تنوي توسيعه. تتيح لك الإضافات إضافة خصائص وسمات إضافية وقصر مجموعة المثيلات على مجموعة فرعية من مثيلات المفهوم الموسَّع.

بالإضافة إلى الوراثة، يقدّم موقع الحالة أيضًا فكرة مراجع المفهوم. وعلى وجه الخصوص، يتضمّن مفهوم الولاية موقعًا يُسمّى country، ويشير إلى مفهوم البلد الذي أنشأناه أعلاه. ويتم إجراء ذلك باستخدام السمة concept. يُرجى العِلم بأنّ هذه السمة لا تقدّم معرّفًا، بل مرجعًا فقط للمفهوم. يعادل هذا الأمر إنشاء معرّف بالقيمة نفسها لمعرّف المفهوم المشار إليه (أي country في هذا المثال). يتم توضيح العلاقة الهرمية بين الولاية والمقاطعة من خلال إضافة السمة isParent="true" في المرجع. بشكل عام، يجب تمثيل السمات ذات العلاقات الهرمية، مثل المناطق الجغرافية، بهذه الطريقة، مع وجود مفهوم ثانوي يتضمّن خاصية تشير إلى المفهوم الأصلي باستخدام السمة isParent.

يبدو تعريف الجدول للولايات كالتالي:

<tables>
  ...
  <table id="states_table">
    <column id="state" type="string"/>
    <column id="name" type="string"/>
    <column id="country" type="string">
      <value>US</value>
    </column>
    <column id="latitude" type="float"/>
    <column id="longitude" type="float"/>
    <data>
      <file format="csv" encoding="utf-8">states.csv</file>
    </data>
  </table>
  ...
</tables>

يحتوي عمود البلد على قيمة ثابتة لجميع الولايات. يؤدي تحديده في DSPL إلى تجنّب تكرار هذه القيمة لكل حالة في البيانات. وتجدر الإشارة أيضًا إلى أننا أدرجنا أعمدة للسمات name وlatitude وlongitude، لأنّ الولاية قد ورثت هذه الخصائص من geo:location. من ناحية أخرى، بعض الخصائص المكتسبة (مثل description) لا تتضمن أعمدة

يظهر ملف CSV على النحو التالي:

state, name,        latitude,  longitude
AL,    Alabama,     32.318231, -86.902298
AK,    Alaska,      63.588753, -154.493062
AR,    Arkansas,    35.20105,  -91.831833
AZ,    Arizona,     34.048928, -111.093731
CA,    California,  36.778261, -119.417932
CO,    Colorado,    39.550051, -105.782067
CT,    Connecticut, 41.603221, -73.087749
...

بما أنّ لدينا مفاهيم حول عدد السكان والعام، يمكننا إعادة استخدامها لتحديد شريحة جديدة لسكان الولايات.

<slices>
  <slice id="states_slice">
    <dimension concept="state"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="states_slice_table"/>
  </slice>
</slices>

يبدو تعريف جدول البيانات على النحو التالي:

<tables>
  ...
  <table id="states_slice_table">
    <column id="state" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <file format="csv" encoding="utf-8">state_slice.csv</file>
  </table>
  ...
</tables>

ويظهر ملف CSV على النحو التالي:

state, year, population
AL,    1960, 9616353
AL,    1961, 9799379
AL,    1962, 9989846
AL,    1963, 10188299

مهلاً، لمَ أنشأنا شريحة جديدة بدلاً من إضافة بُعد آخر إلى الشريحة السابقة؟

قد تكون الشريحة التي تحتوي على أبعاد لكلٍّ من الولاية والبلد غير صحيحة، لأن بعض الصفوف ستشمل بيانات البلد وبعض الصفوف تكون مع بيانات الولاية. سيتضمن الجدول "ثقوب" لبعض الأبعاد، وهو أمر غير مسموح به (تذكر أن القيم المفقودة مسموح بها للمقاييس فقط وليس للأبعاد).

تعمل الأبعاد كـ "مفتاح أساسي" للشريحة. وهذا يعني أنّه يجب أن يتضمّن كل صف بيانات قيمًا لكل السمات، وألا يحتوي صفّا بيانات على القيم نفسها لجميع السمات.

إضافة مقياس: معدّل البطالة

لنضيف الآن مقياسًا آخر إلى مجموعة البيانات:

<concept id="unemployment_rate" extends="quantity:rate">
  <info>
    <name>
      <value>Unemployment rate</value>
    </name>
    <description>
      <value>The percent of the labor force that is unemployed.</value>
    </description>
    <url>
      <value>http://www.bls.gov/cps/cps_htgm.htm</value>
    </url>
  </info>
  <type ref="float/>
  <attribute id="is_percentage">
    <type ref="boolean"/>
    <value>true</value>
  </attribute>
</concept>

يحتوي القسم info من هذا المقياس على اسم ووصف وعنوان URL (رابط يؤدي إلى مكتب إحصاءات العمل بالولايات المتحدة).

وتوسِّع هذه الفكرة أيضًا مفهوم quantity:rate الأساسي. تحدّد مجموعة بيانات الكمية المفاهيم الأساسية لتمثيل الكمّيات الرقمية. في مجموعة البيانات، عليك إنشاء مفاهيم رقمية من خلال توسيع مفهوم الكمية المناسب. وبالتالي، من المفترض أن يكون المفهوم population الموضّح أعلاه قد تم تمديده من quantity:amount.

سمات المفهوم

كما يقدم هذا المفهوم أيضًا إنشاء سمة. في هذا المثال، يتم استخدام إحدى السمات للإشارة إلى أنّ unemployment_rate هي نسبة مئوية. يتمّ اكتساب السمة is_percentage من المفهوم quantity:rate الذي يمتدّ إليه هذا المفهوم. ويستخدم مستكشف البيانات العامة هذه المعلومات لعرض علامات النسبة المئوية عند إنشاء تمثيل بصري للبيانات.

توفّر السمات آلية عامة لإرفاق أزواج المفتاح/القيمة بمفهوم (بالمقارنة مع الخصائص التي تربط قيمًا إضافية بـ مثيلات المفهوم). تمامًا مثل المفاهيم والخصائص، تحتوي السمات على id وinfo وtype. وعلى غرار الخصائص، يمكن أن تشير إلى مفاهيم أخرى.

لا تنطبق السمات على العناصر العامة المحددة مسبقًا فقط، مثل الخصائص الرقمية. يمكنك تحديد سماتك الخاصة لمفاهيمك.

إضافة بيانات معدّل البطالة في الولايات الأمريكية

نحن الآن جاهزون لإضافة بيانات معدل البطالة في الولايات الأمريكية. بما أنّ نسبة البطالة تشكّل مقياسًا ولدينا بيانات عن عدد السكان في الولايات، يمكننا إضافتها إلى الشريحة التي أنشأناها من قبل لسمات الولاية والسنة:

<slices>
  ...
  <slice id="states_slice">
    <dimension concept="state"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <metric concept="unemployment_rate"/>
    <table ref="states_slice_table"/>
  </slice>
  ...
</slices>

... وأضف عمودًا آخر إلى تعريف الجدول:

<tables>
  ...
  <table id="states_slice_table">
    <column id="state" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <column id="unemployment_rate" type="float"/>
    <data>
      <file format="csv" encoding="utf-8">state_slice.csv</file>
    </data>
  </table>
  ...
</tables>

... و إلى ملف CSV:

state, year, population, unemployment_rate
AL,    1960, 9616353,    5.1
AL,    1961, 9799379,    5.2
AL,    1962, 9989846,    4.8
AL,    1963, 10188299,   6.9

لقد ذكرنا سابقًا أنّ المكوّنات تشكّل مفتاحًا أساسيًا للشريحة لكل شريحة. إضافةً إلى ذلك، يمكن أن تحتوي كل مجموعة بيانات على شريحة واحدة فقط لمجموعة محدّدة من السمات. يجب أن تنتمي جميع المقاييس المتاحة لهذه الأبعاد إلى الشريحة نفسها.

المزيد من الأبعاد: التصنيف السكاني حسب الجنس

دعنا نثري مجموعة البيانات بتقسيم السكان حسب الجنس للبلدان. والآن أنت تبدأ في معرفة التدريب... أولاً، نحتاج إلى إضافة مفهوم للجنس:

<concept id="gender" extends="entity:entity">
  <info>
    <name>
      <value>Gender</value>
    </name>
    <description>
      <value>Gender, Male or Female</value>
    </description>
    <pluralName>
      <value>Genders</value>
    </pluralName>
    <totalName>
      <value>Both genders</value>
    </totalName>
  </info>
  <type ref="string"/>
  <table ref="genders_table"/>
</concept>

يحتوي قسم مفهوم الجنس info على pluralName، الذي يوفر النص المطلوب استخدامه للإشارة إلى مثيلات متعددة لمفهوم الجنس. يتضمّن القسم info أيضًا السمة totalName، التي توفر النص المطلوب استخدامه للإشارة إلى جميع حالات مفهوم الجنس ككل. ويستخدم مستكشف البيانات العامة كلاً منهما لعرض معلومات ذات صلة بمفهوم الجنس. بشكل عام، يجب توفيرها للمفاهيم التي يمكن استخدامها كأبعاد.

وتجدر الإشارة إلى أن مفهوم الجنس يمتد أيضًا من entity:entity. من الممارسات الجيدة استخدام المفاهيم المستخدَمة كسمات، لأنّها تسمح لك بإضافة أسماء وعناوين URL وألوان مخصّصة لمثيلات المفاهيم المختلفة.

ويشير مفهوم الجنس إلى الجدول genders_table، الذي يحتوي على القيم المحتملة للجنس وأسماؤه المعروضة (محذوفة هنا).

لإضافة جمهور حسب الجنس إلى مجموعة البيانات، نحتاج إلى إنشاء شريحة جديدة (تذكر: كل مجموعة متاحة من الأبعاد تتوافق مع شريحة في مجموعة البيانات).

<slice id="countries_gender_slice">
  <dimension concept="country"/>
  <dimension concept="gender"/>
  <dimension concept="time:year"/>
  <metric concept="population"/>
  <table ref="countries_gender_slice_table"/>
</slice>

يبدو تعريف الجدول للشريحة كما يلي:

<table id="countries_gender_slice_table">
  <column id="country" type="string"/>
  <column id="gender" type="string"/>
  <column id="year" type="date" format="yyyy"/>
  <column id="population" type="integer"/>
  <data>
    <file format="csv" encoding="utf-8">gender_country_slice.csv</file>
  </data>
</table>

يظهر ملف CSV للجدول كما يلي:

country, gender, year, population
AF,      M,      1960, 4808176
AF,      F,      1960, 4808177
AF,      M,      1961, 4899689
AF,      F,      1961, 4899690...

بالمقارنة مع البلدان السابقة وقطاعات السكان والبطالة، يحتوي هذا المقياس على بُعد إضافي؛ لا تقابل كل قيمة في مقياس السكان بلدًا وعامًا معيّنًا فحسب، ولكن أيضًا ترتبط بجنس معيّن.

لاحظ أننا أنشأنا مجموعة بيانات "نادرة". لا تتوفّر جميع المقاييس لجميع الأبعاد: يتوفّر عدد السكان للبلدان والولايات المتحدة على أساس سنوي، في حين أن معدّل البطالة متاح فقط للبلدان. لا يتوفّر التقسيم حسب الجنس للسكان حسب البلد فقط، ولا يتوفّر لمقياس معدّل البطالة ولا يتوفّر لبُعد الولاية. ويمكن أن يتوفّر أيضًا التناثر على مستوى البيانات، مع عدم توفّر قيم لقيم سمات معيّنة في بعض المقاييس، ولكن لا يتم تمثيل ذلك في DSPL.

المواضيع

إنّ آخر ميزة في DSPL التي سنستخدمها في مجموعة البيانات هي المواضيع. تُستخدَم المواضيع لتصنيف المفاهيم وفقًا للتسلسل الهرمي، كما تستخدمها التطبيقات لمساعدة المستخدمين في الانتقال إلى بياناتك.

في ملف DSPL، تظهر المواضيع قبل المفاهيم مباشرةً. في ما يلي نموذج للتسلسل الهرمي للمواضيع:

<dspl ... >
  ...
  <topics>
    <topic id="geography">
      <info>
        <name>
          <value>Geography</value>
        </name>
      </info>
    </topic>
    <topic id="social_indicators">
      <info>
        <name>
          <value>Social indicators</value>
        </name>
      </info>
    </topic>
    <topic id="population_indicators">
      <info>
        <name>
          <value>Population indicators</value>
        </name>
      </info>
    </topic>
    <topic id="poverty_and_income">
      <info>
        <name>
          <value>Poverty & income</value>
        </name>
      </info>
    </topic>
    <topic id="health">
      <info>
        <name>
          <value>Health</value>
        </name>
      </info>
    </topic>
  </topics>

يمكنك دمج المواضيع بعمق كبير حسب الحاجة.

لاستخدام المواضيع، ما عليك سوى الإشارة إليها من تعريف المفهوم، كما يلي:

<concept id="population">
  <info>
    <name>
      <value>Population</value>
    </name>
    <description>
      <value>Size of the resident population.</value>
    </description>
  </info>
  <topic ref="population_indicators"/>
  <type ref="integer"/>
</concept>

يمكن أن يشير مفهوم إلى أكثر من موضوع.

إرسال مجموعة البيانات

الآن بعد أن أنشأت مجموعة البيانات، تتمثل الخطوة التالية في ضغطها وتحميل ملف zip إلى أداة Google Public Data Explorer. إذا واجهت أي مشاكل، راجِع الأسئلة الشائعة التي تتضمّن مناقشة لأكثر مشاكل التحميل شيوعًا.

يمكنك أيضًا تنزيل ملف XML المكتمل وحزمة كاملة لمجموعة البيانات المرتبطة بهذا البرنامج التعليمي.

إلى أين نذهب من هنا

تهانينا على إنشاء مجموعة بيانات DSPL الأولى! الآن بعد فهم الأساسيات، ننصحك بالاطّلاع على دليل المطوِّر الذي يوثّق، إلى جانب أشياء أخرى، ميزات DSPL "المتقدمة"، مثل دعم اللغات المتعددة والمفاهيم التي يمكن ربطها.

يمكنك أيضًا الاطّلاع على بعض أمثلة مجموعات البيانات.