DSPL Eğitimi

DSPL, Veri Kümesi Yayınlama Dili'nin kısaltmasıdır. DSPL'de açıklanan veri kümeleri, verilerin zengin ve görsel olarak incelenmesine olanak tanıyan bir araç olan Google Herkese Açık Veri Gezgini'ne aktarılabilir.

Not: Herkese Açık Verileri yükleme aracını kullanarak Google Herkese Açık Veriler'e veri yüklemek için bir Google Hesabınızın olması gerekir.

Bu eğitim, temel bir DSPL veri kümesinin nasıl hazırlanacağına dair adım adım bir örnek sağlar.

DSPL veri kümesi, XML dosyası ve CSV dosyaları grubu içeren bir pakettir. CSV dosyaları, veri kümesinin verilerini içeren basit tablolardır. XML dosyası, önlemlerin açıklamaları gibi bilgilendirme amaçlı meta verilerin yanı sıra tablolar arasındaki referanslar gibi yapısal meta verileri içeren veri kümesinin meta verilerini tanımlar. Meta veriler, uzman olmayan kullanıcıların verilerinizi keşfedip görselleştirmesine olanak tanır.

Bu eğiticiyi anlamanın tek ön koşulu, XML'i iyi anlamaktır. Basit veritabanı kavramları hakkında bilgi sahibi olma (ör. tablolar ve birincil anahtarlar) yardımcı olabilir, ancak zorunlu değildir. Referans olması açısından, bu eğiticiyle ilişkilendirilmiş tamamlanan XML dosyasını ve tamamlanmış veri kümesi paketini de inceleyebilirsiniz.

Genel bakış

Veri kümesimizi oluşturmaya başlamadan önce, bir DSPL veri kümesinin içeriğine dair genel bir genel bakışı burada bulabilirsiniz:

  • Genel bilgiler: Veri kümesi hakkında
  • Kavramlar: Veri kümesinde görünen "nesnelerin" tanımları (ör. ülkeler, işsizlik oranı, cinsiyet vb.)
  • Dilimler: Veri içeren kavramların kombinasyonları
  • Tablolar: Kavramlar ve dilimlere ait veriler. Konsept tabloları numaralandırmaları, dilim tabloları ise istatistiksel verileri içerir
  • Konular: Etiketleme aracılığıyla veri kümesi kavramlarını anlamlı bir hiyerarşi içinde düzenlemek için kullanılır.

Bu soyut kavramları göstermek için bu eğitimde kullanılan veri kümesini (kurmaca verilerle) değerlendirin: nüfus, işsizlik, ülke, ABD eyaleti ve cinsiyetin çeşitli kombinasyonlarıyla birleştirilmiş istatistiksel zaman serisi.

Bu örnek veri kümesinde aşağıdaki kavramlar tanımlanmaktadır:

  • country
  • gender
  • nüfus
  • state
  • işsizlik oranı
  • yıl

Eyalet gibi kategorik kavramlar, tüm olası değerlerini (Kaliforniya, Arizona vb.) numaralandıran kavram tabloları ile ilişkilendirilir. Kavramlar, bir eyaletin adı veya ülkesi gibi mülkler için ek sütunlar içerebilir.

Dilimler, veri kümesinde istatistiksel veri bulunan her bir kavram kombinasyonunu tanımlar. Bir dilim boyutlar ve metrikler içerir. Yukarıdaki resimde boyutlar mavi, metrikler ise turuncudur. Bu örnekte, gender_country_slice dilimi hem population metriği hem de country, year ve gender boyutları için veri içeriyor. country_slice adlı diğer dilim, ülkeler için toplam yıllık nüfus sayılarını (metrik) verir.

Dilimlere ve metriklere ek olarak, dilimler de gerçek verileri içeren tablolara referans verir.

Şimdi, DSPL'de bu tür bir veri kümesinin nasıl oluşturulacağı adım adım açıklanıyor.

Veri Kümesi Bilgileri

Başlamak için veri kümemize bir XML dosyası oluşturmamız gerekir. Örnek veri kümemiz için bir DSPL açıklamasının başlangıcını burada bulabilirsiniz:

<?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>

Veri kümesi açıklaması üst düzey bir <dspl> öğesiyle başlar. targetNamespace özelliği, bu veri kümesini benzersiz şekilde tanımlayan bir URI içerir. Veri kümesinin ad alanı, veri kümesini yayınlarken özellikle önemlidir. Çünkü bu veri kümesi, veri kümenizin global tanımlayıcısı ve diğer kullanıcıların başvurabileceği araçlar olur.

targetNamespace özelliğinin atlanabileceğini unutmayın. Bu durumda, veri kümesi içe aktarıldığında otomatik olarak benzersiz bir ad alanı oluşturulur.

Diğer veri kümelerindeki bilgileri kullanma

Veri kümeleri, veri kümelerini içe aktararak diğer veri kümelerindeki tanımları ve verileri yeniden kullanabilir. Her <import> öğesi, bu veri kümesinin referans vereceği başka bir veri kümesinin ad alanını belirtir.

Örnek veri kümemizde, http://www.google.com/publicdata/dataset/google/quantity (Google tarafından oluşturulan, sayısal sayıları tanımlama açısından faydalı kavramlar içeren bir veri kümesi) ve sırasıyla zaman, varlık ve konumla alakalı tanımlar sağlayan zaman, varlık ve coğrafi veri kümelerinden bazı tanımlara ihtiyacımız vardır.

Üstteki <dspl> öğesi, ad alanı öneki beyanı sağlar (ör. xmlns:time="http://...") içe aktarır. Ön ek bildirimleri, diğer veri kümelerindeki öğelere kısa ve öz bir şekilde atıfta bulunmak için gereklidir. Örneğin time:year, içe aktarılan veri kümesindeki ad alanı time ön ekiyle ilişkilendirilmiş olan year tanımına referans verir.

Veri kümesi ve sağlayıcı bilgileri

<info> öğesi, veri kümesi hakkında genel bilgiler içerir: ad, açıklama ve daha fazla bilgiye ulaşılabilen bir URL.

<provider> öğesi, veri kümesinin sağlayıcısı hakkında bilgiler içerir: Veri kümesinin adı ve daha fazla bilginin bulunabileceği bir URL (genellikle veri sağlayıcısının ana sayfası).

Kavramları Tanımlama

Veri kümesiyle ilgili bazı genel bilgileri sağladığımıza göre bu veri kümesinin içeriğini tanımlamaya hazırız. Bir sonraki hedefimiz, son 50 yıl içindeki ülkelerin nüfus istatistiklerini eklemektir.

Yapmanız gereken ilk şey nüfus, ülke ve yıl kavramlarıyla ilgili bilgi vermektir. DSPL'de, bu tanımlar kavramlar olarak adlandırılır.

Kavram, veri kümesinde görünen bir veri türünün tanımıdır. Belirli bir kavrama karşılık gelen veri değerleri, bu kavramın örnekleri olarak adlandırılır.

Nüfus

Nüfus kavramını tanımlayarak başlayalım. Bir DSPL dokümanında, kavramlar veri kümesi ve sağlayıcı bilgilerinden hemen sonra gelen bir <concepts> öğesinde tanımlanır.

Herhangi bir kavram için gereken minimum bilginin olduğu bir nüfus kavramı: id (benzersiz bir tanımlayıcı), name ve type.

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

Bu örnek şu şekilde çalışır:

  • Her kavram, veri kümesindeki kavramı benzersiz şekilde tanımlayan bir id sağlamalıdır. Bu, aynı veri kümesinde tanımlanan iki kavramın aynı kimliğe sahip olamayacağı anlamına gelir.
  • Veri kümesinde ve sağlayıcısında olduğu gibi <info> öğeleri, konsept hakkında ad ve açıklama gibi metin bilgileri sağlar.
  • <type> öğesi, konseptin örnekleri (diğer bir deyişle "değerleri") için veri türünü belirtir. Bu örnekte, population türü integer. DSPL, aşağıdaki veri türlerini destekler:
    • string
    • integer
    • float
    • boolean
    • date

Ülke

Şimdi ülke kavramının tanımını yazalım:

<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>

Ülke kavramının tanımı bir önceki, id, info ve type ile başlar.

Kavram değerleri

Ülkeler gibi kategorik kavramlar, mümkün olan tüm örneklerin bir dökümünü içerir. Başka bir deyişle, referans verilebilecek tüm olası ülkeleri listeleyebilirsiniz. Ancak bunun için her ülkenin benzersiz bir tanımlayıcısı olmalıdır. Bu örnekte, ülkeleri belirlemek için ISO ülke kodları kullanılmaktadır. Bu kodlar string türündedir.

Bu örnekte ISO kodunu kullanmanız gerekmez. Ülke adını da kullanabilirsiniz. Ancak adlar dile göre değişir, zaman içinde değişebilir ve veri kümelerinde her zaman tutarlı şekilde kullanılmaz. Ülkeler ve genel olarak kategorik kavramlar için, kısa, kararlı, yaygın olarak kullanılan ve dilden bağımsız tanımlayıcılar (varsa) seçmek iyi bir uygulamadır.

Kavram özellikleri

Ülke kavramı, id özelliğine ek olarak ülke adını belirten bir <property> öğesine sahiptir. Başka bir deyişle, ülke adı ("İrlanda") id IE'ye sahip ülkenin bir mülküdür. Özellikler, DSPL'nin bir kavramın örnekleri hakkında ek yapılandırılmış bilgileri sağlama şeklidir.

Kavram gibi, mülklerde id, info ve type bulunur.

Kavram verileri

Son olarak, ülke kavramının bir <table> öğesi vardır. Bu öğe, tüm ülkelerin listesini numaralandıran bir tabloya başvuruda bulunur.

Tabloları kullanmak bazı kavramlar için mantıklıyken diğerleri için anlamlı değildir. Örneğin, kavram nüfusu için olası tüm değerlerin numaralandırılması uygun değildir. Bununla birlikte, bir kavram için referans verdiğiniz tablo, ilgili kavramın tüm örneklerini içermelidir. Örneğin, tabloda yalnızca birkaç örnek değil, her ülke listelenmelidir.

Veri kümesi, countries_table tablosunu aşağıdaki gibi tanımlar:

...
<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>

Ülkeler tablosu, tablonun sütunlarını ve türlerini, ayrıca verileri içeren bir CSV dosyasını belirtir. Bu CSV, veri kümesi XML ile paketlenip yüklenebilir ya da HTTP, HTTPS veya FTP üzerinden uzaktan erişilebilir. İkinci durumlarda countries.csv yerine bir URL (örneğin, http://www.myserver.com/mydata/countries.csv) kullanırsınız.

Depolandığı her yerde CSV dosyası şöyle görünür:

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

Tablonun ilk satırında, DSPL table tanımında belirtildiği gibi sütun kimlikleri listelenir. Aşağıdaki satırların her biri, ülke kavramının bir örneğine karşılık gelir. Konsept için tablo varsa konseptin tüm örneklerini içermelidir. Bu durumda, tüm ülkeleri listelemelidir.

Sütunlar, kimliklerini temel alarak ülke kavramıyla ve özellikleriyle eşlenir. İlk sütunun kimliği olan country, kavram kimliğiyle eşleşir. Bu sütun, ülke kavramıyla tanımlanan benzersiz ülke tanımlayıcısını içerir. Sonraki sütun, ülke kavramının name özelliğine karşılık gelir. Bu sütundaki değerler, name özelliğinin değerleriyle eşleşir.

Kavram tablosu CSV dosyası için birkaç gereksinim vardır:

  • Veri dosyasının ilk satırındaki sütun başlıkları, id kavramıyla ve verilerin ilişkilendirildiği kavramın id özelliğiyle tam olarak eşleşmelidir (ancak sırası değişebilir).
  • Her satır, kavramdaki özellik sayısıyla tam olarak aynı sayıda öğeye sahip olmalıdır (değer boş olsa bile).
  • Kavramın id alanı (burada, ülke kodu) için her değer benzersiz olmalı ve boş olmamalıdır (boş alan, sıfır veya yalnızca boşluk içeren bir alandır).
  • Diğer kavramlara referans veren özelliklerin değerleri boş olmalı veya belirtilen kavramın geçerli bir değeri olmalıdır.
  • Virgül, çift tırnak veya yeni satır karakterleri içeren değerler çift tırnak içine alınmalıdır.
  • Bir değerin içindeki çift tırnak işaretlerinin hemen başında başka bir çift tırnak işareti olmalıdır.

Yıl

Ülke nüfus verileri için ihtiyacımız olan son kavram, yılları temsil eden bir kavramdır. Yeni bir kavram tanımlamak yerine, içe aktardığımız veri kümelerinden birindeki yıl kavramını kullanacağız: "http://www.google.com/publicdata/dataset/google/time". Bunu yapmak için bunu time:year olarak referans göstermemiz gerekir. Burada time, başvurulan veri kümesini, year ise kavramı tanımlar.

Standart kavramlar

time:year, Google tarafından tanımlanan küçük bir standart kavramların bir parçasıdır. Standart kavramlar, zaman, coğrafya, sayısal miktarlar, birimler vb. için temel tanımlar sağlar.

Aslında, yukarıda tanımlanan ülke kavramı standart bir kavram olarak mevcuttur. Siteyi yalnızca açıklama amaçlı olarak oluşturduk. Mümkün olduğunda veri kümelerinizde doğrudan veya ek olarak standart kavramları kullanmalısınız (uzantılar hakkında daha fazla bilgiyi aşağıda bulabilirsiniz). Standart kavramlar, verilerinizi diğer veri kümeleriyle karşılaştırılabilir hale getirir ve Public Data Explorer'da veri kümeleriniz için özellikleri etkinleştirir. Örneğin, zaman içindeki verilere animasyon eklemek veya bir coğrafi veriyi bir haritada göstermek için sırasıyla time ve geo standart kavramları kullanılır.

İlk Dilim

Artık nüfus, ülke ve yıla yönelik kavramlarımız var. Şimdi bunları bir araya getirmenin zamanı geldi!

Bunun için, bunları bir araya getiren bir dilim oluşturmamız gerekir. DSPL'de bir dilim, verilerin mevcut olduğu kavramların bir kombinasyonudur.

Neden doğru sütunları içeren bir tablo oluşturmak gerekmiyor? Çünkü dilimler, veri kümesinin kavramlarına göre elde edilen bilgileri yakalar. Veri kümemizi daha fazla parça oluşturdukça bu veriler daha anlaşılır hale gelecektir.

Dilimler, DSPL dosyasında bir <slices> öğesinin altında görünür. concepts öğesinin hemen sonrasında görünmelidir.

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

Kavramlar gibi, her bir dilimin veri kümesindeki dilimi benzersiz bir şekilde tanımlayan bir id (countries_slice) vardır.

Bir dilim iki tür kavram referansı içerir: Boyutlar ve metrikler. Metriklerin değerleri boyutların değerlerine göre değişir. Burada, population (metrik) değeri, country ve year boyutlarına göre değişir.

Tıpkı kavramlar gibi, dilimler de dilimin verilerini içeren bir tablo referansını içerir. Başvurulan tabloda, dilimin her bir boyutu ve metriği için bir sütun olmalıdır. Kavramlarda olduğu gibi, dilimin boyutları ve metrikleri de aynı kimliklere sahip tablo sütunlarıyla eşleştirilir.

Dilim tablosu

Nüfus oranımıza ait tablo, DSPL dosyasının tables bölümünde görünür:

<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 sütununun, yılların nasıl biçimlendirildiğini belirten bir format özelliği içerdiğini unutmayın. Desteklenen tarih biçimleri, Joda DateTime biçiminde tanımlanan biçimlerdir.

countries_slice tablosu, tablonun sütunlarını ve türlerini, ayrıca verileri içeren bir CSV dosyasını işaret eder. CSV dosyası şöyle görünür:

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

Veri tablosunun her bir satırı, country ve year boyutlarının benzersiz kombinasyonunu ve population metriğinin karşılık gelen değerini (örneğin, 1960'ta Afganistan'ın nüfusu - metrik - boyutlar) içerir.

country sütunundaki değerlerin, ülkenin ISO 3166 2 harfli kodu olan country kavramının değeriyle/tanımlayıcısıyla eşleştiğini unutmayın.

Bir dilimin CSV verileri aşağıdaki sınırlamaları karşılamalıdır:

  • Boyut alanlarının (ör. country ve year) her değeri boş olmamalıdır. Metrik alanlarının (ör. population) değerleri boş olabilir. Boş değer hiçbir karakterle temsil edilmez.
  • Bir kavrama referans veren boyut alanının her değeri, konseptin verilerinde yer almalıdır. Örneğin, AF değeri, country kavram verisi tablosunda mevcut olmalıdır.
  • Her benzersiz boyut değeri kombinasyonu (ör. AF, 2000) yalnızca bir kez gerçekleşebilir.
  • Veriler, zaman olmayan boyut sütunlarına göre (herhangi bir sırada) sıralanmalıdır. Daha sonra, isteğe bağlı olarak diğer sütunlardan herhangi birine göre sıralanmalıdır. Örneğin, [date, dimension1, dimension2, metric1, metric2] sütunlarını içeren bir tabloda dimension1 sütununa göre dimension2 ve ardından date sıralarını sıralayabilirsiniz. Ancak bunları date ve boyutlara göre sıralayamazsınız.

Özet

Bu noktada, DSPL'mizde ülke nüfus verilerini açıklamaya yetecek kadar verimiz vardır. Özetlemek gerekirse:

  • Veri kümesinin ve sağlayıcısının DSPL üstbilgisini ve açıklamasını oluşturun
  • Nüfus için bir kavram, ülke için başka bir kavram oluşturun. Tüm ülkeleri ve adları gösteren bir csv dosyası oluşturun.
  • Google'dan içe aktarılan zaman veri kümesinde önceden tanımlanmış yıl kavramına referans vererek zaman içindeki ülkeler için nüfus sayılarımızı içeren bir dilim oluşturun.

Bu eğiticinin geri kalanında, konuya göre gruplandırılmış daha fazla metrik ve daha fazla dilim ekleyerek veri kümesimizi zenginleştireceğiz.

Boyut Ekleme: ABD

Şimdi ABD'deki eyaletler için nüfus verilerini ekleyerek veri kümemizi zenginleştirelim. İlk olarak eyaletler için bir kavram tanımlamamız gerekir. Bu, daha önce tanımladığımız ülke kavramına çok benziyor.

<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>

Kavram uzantıları ve mülk referansları

Eyalet kavramı, DSPL'nin birkaç yeni özelliğini sunmaktadır.

İlk olarak, geo:location (veri kümenizin başında içe aktardığımız harici coğrafi veri kümesindegeo:location) başka bir kavramı kapsama alır. Semantik olarak bu, state türünün bir tür geo:location olduğu anlamına gelir. Sonuç olarak geo:location özelliğinin tüm özelliklerini ve özelliklerini devralır. Özellikle konum, latitude ve longitude özelliklerini tanımlar. Önceki kavram genişletilerek bu özellikler de eyalete uygulanır. Dahası, konum entity:entity konumundan devralındığından eyalet, name, description ve info_url dahil diğer tüm mülkleri de alır.

Not: Daha önce tanımlanan ülke kavramı teknik olarak geo:location dışına da yayılmış olmalıdır. Kolaylık sağlaması açısından bu nokta daha önce atlanmıştı. Bununla birlikte, konumdan ülkeye devralmayı son XML dosyasına ekledik.

Not: Diğer veri kümeleri tarafından tanımlanan bilgileri yeniden kullanmak için kendi veri kümelerinizde extends yapısını kullanabilirsiniz. extends kullanımı, kavramdaki tüm örneklerin, kapsamını genişlettiğiniz konseptin geçerli örnekleri olmasını gerektirir. Uzantılar, ek özellikler ve özellikler eklemenize ve örnek grubunu, genişletilmiş konseptin örneklerinin bir alt kümesiyle kısıtlamanıza olanak tanır.

Devlet özelliği, devralmaya ek olarak kavram referansları fikrini de sunar. Özellikle eyalet kavramı, yukarıda oluşturduğumuz ülke kavramına referans veren bir country özelliğine sahiptir. Bunun için concept özelliği kullanılır. Bu özelliğin bir kimlik sağlamadığını, yalnızca bir kavram referansı olduğunu unutmayın. Bu, referans alınan kavramın kimliğiyle aynı değere sahip bir kimlik oluşturmaya eşdeğerdir (ör. Bu örnekte country). Eyalet ve bölge arasındaki hiyerarşik ilişki, referansta isParent="true" özelliğine sahip olarak yakalanır. Genel olarak, coğrafyalar gibi hiyerarşik ilişkilere sahip boyutlar bu şekilde temsil edilmelidir. Alt kavram ise isParent özelliğini kullanarak üst konsepte referans veren bir özelliğe sahiptir.

Eyaletler için tablo tanımı aşağıdaki gibidir:

<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>

Ülke sütununda tüm eyaletler için sabit bir değer bulunur. Bunu DSPL'de belirtmek, verilerdeki her durum için bu değerin tekrarlanmasını önler. Ayrıca, eyalet bu özellikleri geo:location kaynağından devraldığı için name, latitude ve longitude ile ilgili sütunları eklediğimizi unutmayın. Diğer yandan, bazı devralınan mülkler (ör. description) sütunları yoktur. Bu bir sorun değildir, bir kavram kavram tanım tablosundan çıkarılırsa değeri her kavram örneğinde tanımlanmamış olarak kabul edilir.

CSV dosyası şöyle görünür:

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
...

Nüfus ve yıl için halihazırda sahip olduğumuz kavramlardan yararlanarak bu nüfusu eyalet nüfusu için yeni bir dilim tanımlamak üzere yeniden kullanabiliriz.

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

Veri tablosu tanımı aşağıdaki gibidir:

<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 dosyası aşağıdaki gibi görünür:

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

Bir dakika, neden önceki boyuta başka bir boyut eklemek yerine yeni bir dilim oluşturduk?

Bazı satırlar ülke verileri, bazıları da eyalet verileri için geçerli olacağından hem eyalet hem de ülke boyutları içeren bir dilim doğru olmaz. Tabloda bazı boyutlar için "delik" var ve bu izin verilmiyor. (Eksik değerlere yalnızca boyutlar için izin verildiğini, boyutlar için izin verilmediğini unutmayın).

Boyutlar, dilim için "birincil anahtar" olarak işlev görür. Bu, her veri satırının tüm boyutlar için değerlere sahip olması gerektiği ve hiçbir veri satırının tüm boyutlar için aynı değerlere sahip olamayacağı anlamına gelir.

Metrik Ekleme: İşsizlik Oranı

Şimdi veri kümemize başka bir metrik ekleyelim:

<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>

Bu metriğin info bölümünde bir ad, açıklama ve URL (ABD İşgücü İstatistikleri Bürosu'na bağlantı) yer alır.

Bu kavram ayrıca quantity:rate standart kavramını da kapsar. Miktar veri kümesi, sayısal miktarları temsil eden temel kavramları tanımlar. Veri kümenizde uygun miktar kavramını genişleterek sayısal kavramlarınızı oluşturmanız gerekir. Bu nedenle, yukarıda tanımlanan population kavramı teknik olarak quantity:amount öğesinden genişletilmiş olmalıdır.

Kavram özellikleri

Bu kavram ayrıca bir özellik oluşturmaya da olanak tanır. Bu örnekte, unemployment_rate değerinin yüzde olduğunu belirtmek için kullanılan bir özellik vardır. is_percentage özelliği, bu kavramın kapsamını kapsayan quantity:rate kavramından devralınır. Bu bilgiler, Data Data Explorer tarafından verileri görselleştirirken yüzde işaretlerini göstermek için kullanılır.

Özellikler, bir kavrama anahtar/değer çiftleri eklemek için genel bir mekanizma sağlar (ek değerleri bir kavramın örnekleriyle ilişkilendiren özelliklerin aksine). Kavramlar ve özellikler gibi, özellikler de id, info ve type içerir. Mülkler gibi, diğer kavramlara da başvurabilirler.

Özellikler yalnızca sayısal özellikler gibi önceden tanımlanmış genel öğelere yönelik değildir. Kavramlarınız için kendi özelliklerinizi tanımlayabilirsiniz.

ABD Eyaletleri için İşsizlik Oranı Verileri Ekleme

Artık ABD eyaletleri için işsizlik oranı verilerini eklemeye hazırız. İşsizlik oranı bir metrik olduğu ve eyaletlere ait nüfus verileri zaten mevcut olduğu için bu oranı eyalet ve yıl boyutları için önceden oluşturduğumuz dilime ekleyebiliriz:

<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>

... ve tablo tanımına başka bir sütun ekleyin:

<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>

... ve CSV dosyasına:

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

Daha önce söylediğimiz gibi, her dilim için boyutlar, dilim için birincil anahtardır. Ayrıca, her veri kümesi belirli bir boyut kombinasyonu için yalnızca bir dilim içerebilir. Bu boyutlar için kullanılabilen tüm metrikler aynı dilime ait olmalıdır.

Diğer Boyutlar: Cinsiyete Göre Döküm Dökümü

Veri kümesimizi ülkelere göre cinsiyete göre ayrılmış şekilde zenginleştirelim. Şu anda, matkabı keşfetmeye başladınız... Öncelikle cinsiyet için bir kavram eklememiz gerekir:

<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>

Cinsiyet kavramı info bölümünde, cinsiyet kavramının birden fazla örneğine atıfta bulunmak için kullanılacak metni sağlayan bir pluralName bulunmaktadır. info bölümünde ayrıca, cinsiyet kavramının bütünüyle tüm tekrarlara atıfta bulunmak için kullanılacak metni sağlayan bir totalName bulunur. Her ikisi de Public Data Explorer tarafından cinsiyet kavramıyla ilgili bilgileri görüntülemek için kullanılır. Genel olarak, boyut olarak kullanılabilecek kavramlar için bunları sağlamanız gerekir.

Cinsiyet kavramının entity:entity kuruluşunda da geçerli olduğunu unutmayın. Bu yöntem, çeşitli kavram örnekleri için özel adlar, URL'ler ve renkler eklemenize olanak sağladığından, boyut olarak kullanılan kavramlar için iyi bir uygulamadır.

Cinsiyet kavramı, cinsiyet ve görünen adlarıyla ilgili olası değerleri (burada hariç tutulan) içeren genders_table tablosunu ifade eder.

Veri kümemize cinsiyete göre nüfus eklemek için yeni bir dilim oluşturmamız gerekir (unutmayın: Mevcut her boyut kombinasyonu, veri kümesindeki bir dilime karşılık gelir).

<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>

Dilim için tablo tanımı aşağıdaki gibidir:

<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>

Tablonun CSV dosyası şöyle görünür:

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

Önceki ülke, nüfus ve işsizlik oranıyla karşılaştırıldığında bu segmentin ek bir boyutu var. Nüfus metriğinin her değeri yalnızca belirli bir ülke ve yıla değil, aynı zamanda belirli bir cinsiyete de karşılık geliyor.

"Aygıt" veri kümesi oluşturduğumuzu unutmayın. Tüm metrikler tüm boyutlar için mevcut değildir: nüfus her yıl ülke ve ABD eyaletleri için kullanılabilirken işsizlik oranı yalnızca ülkeler için kullanılabilir. Cinsiyete göre döküm yalnızca ülkeye göre nüfus için kullanılabilir; eyalet boyutu için değil, işsizlik oranı metriği için kullanılamaz. Kapsamlılık, veri düzeyinde de bulunabilir. Ancak belirli metriklerin belirli boyut değerleri için değerleri yoktur, ancak bu, DSPL'de temsil edilmez.

Konular

Veri kümesimizde kullanacağımız son DSPL özelliği, konulardır. Konular, kavramları hiyerarşik olarak sınıflandırmak için kullanılır ve uygulamalar, kullanıcıların verilerinize erişmesine yardımcı olmak için kullanılır.

DSPL dosyasında, konular kavramlardan hemen önce görünür. Aşağıda örnek bir konu hiyerarşisi verilmiştir:

<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>

Konuları gerektiği kadar iç içe yerleştirebilirsiniz.

Konuları kullanmak için konsept konseptinden aşağıdaki gibi referans almanız gerekir:

<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>

Bir kavram birden fazla konuya referans verebilir.

Veri Kümenizi Gönderme

Veri kümenizi oluşturduğunuza göre sonraki adım, veri kümesini sıkıştırmak ve Google Public Data Explorer aracına zip dosyasını yüklemektir. Herhangi bir sorunla karşılaşırsanız en sık karşılaşılan yükleme sorunları hakkında bir tartışmanın yer aldığı SSS bölümünü kontrol edin.

Referans olması için bu eğiticiyle ilişkili eksiksiz XML dosyasını ve veri kümesinin tamamını da indirebilirsiniz.

Sırada ne var?

Tebrikler, ilk DSPL veri kümenizi oluşturdunuz. Temel bilgileri öğrendiğinize göre, diğer konuların yanı sıra çok dilli destek ve eşlenebilir kavramlar gibi "gelişmiş" TTP özelliklerini belgeleyen Geliştirici Kılavuzu'nu okumanızı öneririz.

Ayrıca, bazı örnek veri kümelerine de göz atabilirsiniz.